time-complexity - 如何解决给定代码块示例的 O-Notation?
问题描述
我正在为我的算法考试进行修改,遇到了一个我不明白的问题,如何解决它。这是示例;
for (m=0; m<n; m++)
for (i=1; i<m; i=2*i)
[Sequence, Run Time O(1)]
我发现了直观的 O(n^2) 但我不确定它是否属实。如果你们能向我解释一下,我会很高兴的。再次感谢!
解决方案
虽然 O(n^2) 是一个上限,但它并不是你能想到的最严格的。该标题转到 O(nlog(n))。希望很清楚内部循环运行 log(m) 次。所以你得到的是函数的总运行时间是 log(1) + log(2) + ... + log(n)。因为对于所有 i <= n,我们有 log(i) <= log(n),并且总和中有 n 项,我们得到总和以 nlog(n) 为界。
推荐阅读
- angular - 如何使管道对离子中的模态组件可见
- java - 如何使用 JPA 继承(spring boot)制作 Json 结果
- javascript - 如何在 vue 3 中注册自定义指令
- c++ - 如何获得 Microsoft 的 C++ 编译器和标准库(仅此而已)?
- python - Python Tensorflow ValueError:密集层的输入0与层不兼容
- serilog - 使用最小 API 在 .NET 6 RC1 中使用两个阶段设置 Serilog
- html - 浮动 td 内的 span 元素
- python - 如何刮长文章的段落?
- mongodb - Mongo查询以连接文档中包含的数组元素
- javascript - 即使我没有访问受保护的路线,也会自动重定向受保护的路线