时间复杂度分析。 while循环使用内部for循环

时间:2014-02-01 18:19:56

标签: algorithm time big-o complexity-theory

我正在尝试查找此代码运行的次数。在右边,我尝试了代码。我不确定循环。这是代码:

                         times
sum = 0                    1
i = 1                      1 
while i ≤ n                log n + 1
 sum = sum + i             n log n
 i = 2i                    log n
return sum                  1

=> n log n + 2 log n + 4

从而:O(n log n)

这是正确的吗?

1 个答案:

答案 0 :(得分:2)

不,您的分析不正确。请注意,内部循环的每次迭代都会执行O(1)工作,因此可以通过将循环迭代次数乘以O(1)来找到总时间复杂度。

在这种情况下,循环运行O(log n)次迭代,因为在超过n之前我只能加倍O(log n)次。因此,总时间复杂度为O(log n)。

希望这有帮助!