for-loop - 计算嵌套for循环的复杂度

标签 for-loop big-o complexity-theory nested-loops

我想计算这个嵌套 for 循环的复杂度:

s = 0;
for(i=1; i<=n; i*=2)
   for(j=1; j<=i; j*=2)
      s++;

我使用什么策略来找到这段代码的 Big O 复杂度?

最佳答案

外层循环执行 1, 2, 4, 8, ... n,这需要 O(lg n) 步,因为你只能加倍一个 O (lg n) 次,直到您击中 n

内部循环做同样的事情。它只上升到 i,但是在外循环的最后一次迭代中,i 达到了它的最大值,又是 n,所以这是也为 O(lg n)。

将它们放在一起给出了 O((lg n)²) 的上限,通常缩写为 O(lg² n)。

关于for-loop - 计算嵌套for循环的复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15433435/

相关文章:

For 循环内 If 语句的 JavaScript 正确语法

python - 如何在 Python 中创建无限循环(不使用 while 循环)?

c - 如何获取数字序列然后打印最后 5 个?

performance - 任何算法的时间复杂度是否有可能随着输入大小的增加而降低,例如

algorithm - 如何计算可变长度的嵌套循环的运行时复杂度

algorithm - Cormen 中关于插入排序的矛盾

performance - 使用回溯和分支定界的优势

javascript - 在数组中,我怎样才能按照我希望打印的方式打印值而不是最后一个值?

algorithm - 了解后缀树的 Ukkonen 算法

java - 处理集合值的复杂性