循环增量的复杂性2

时间:2011-11-27 21:13:09

标签: algorithm complexity-theory

以下循环的时间复杂度是多少?

for(int i=1; i<=n; i=i*2){
    System.out.println("*");
}

是对数吗?

3 个答案:

答案 0 :(得分:5)

显示的算法为O(log n)

由于迭代次数为log2(n)log10(n)/log10(2)

答案 1 :(得分:3)

它是O(log n)因为你在每次迭代时将i的值加倍:1,2,4,8 ......

如果n是2 x ,则循环将在log 2 (2 x )+ 1 = x + 1次迭代后终止。

答案 2 :(得分:1)

是的,您将经历log_2(n)次。这意味着Ω(log(n)的复杂性必须准确 - 即O(log(n))o(log(n))

如果增量中的操作数应该是+而不是*,则复杂性为O(log(n)),因为循环的次数是n/2,这是一个函数由函数n支配。