找出以下循环的计算复杂性

时间:2013-11-08 12:42:00

标签: big-o time-complexity asymptotic-complexity

code

For n=1 : Inner loop will execute 1 time.
For n=2 : Inner loop will execute 1+2 times.
For n=4 : Inner loop will execute 1+2+4 times.
For n=8 : Inner loop will execute 1+2+4+8 times.

。 。

那么如何才能找到计算复杂度?

我的回答是: 内循环迭代次数= n +(n / 2)+(n / 4)+(n / 8)+ ... +(n / n)

2 个答案:

答案 0 :(得分:1)

总时间复杂度为Θ(n)。为了看到这一点,请注意内循环每次迭代都执行Θ(i)工作,并且我接受值1,2,4,8,16,32,...,2 log n 。如果我们总结一下,使用几何级数之和的公式,我们得到

  

1 + 2 + 4 + 8 + ... + 2 log n = 2 log n + 1 - 1 = 2·2 log n < / sup> - 1 = 2n - 1

所以完成的工作总量是Θ(n)。

希望这有帮助!

答案 1 :(得分:1)

您可以按照以下方式正式进行,以获得将执行的确切指令数量以及增长顺序:

enter image description here