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 但不确定如何添加它们
答案 0 :(得分:1)
外部循环为log N
,因为它绕着log 2 (N)次。
内部循环是log N的变体。
总而言之,您可以将其称为O((log N) 2 )作为上限。即。
让M = log 2 (n)
总和为M + (M-1) + ... 1
或M * (M + 1) / 2
,其顺序为O(M 2 )