计算Big-O for loop halve x和它内部的嵌套循环

时间:2016-04-13 07:29:57

标签: java algorithm

for(int i=n; i > 0; i=i/2)
    for(int j=i; j > 0; j=j/2)
        ...

对于这个循环,Big O应该是什么? 为什么? 我认为嵌套循环将运行log(n)+ log(n / 2)+ ... + 1 但不确定如何添加它们

1 个答案:

答案 0 :(得分:1)

外部循环为log N,因为它绕着log 2 (N)次。

内部循环是log N的变体。

总而言之,您可以将其称为O((log N) 2 )作为上限。即。

让M = log 2 (n)

总和为M + (M-1) + ... 1M * (M + 1) / 2,其顺序为O(M 2