我试图找到以下算法的最坏情况时间复杂度。
for (i = N*N; i>1; i = i /2 ){
for ( j = 0; j < i; j++){
counter++;
}
}
我设法弄清楚内部循环将以对数方式执行(虽然倒退,但我认为这无关紧要)但我真的不确定如何接近外循环。
答案 0 :(得分:0)
正如@ClintPowell指出的那样,内部循环是O(i)
。那么,诀窍是为i
添加各种值。
假设外环是i=1; i<=K; i=i*2
(正如你所指出的那样,顺序并不重要),并以K
来解决。然后将N*N
替换为K
,并根据需要进行简化。
答案 1 :(得分:0)
外循环执行log n次,内循环执行i次。 如果k = log n,那么从1到k的i的总和将是k(k + 1)/ 2,其为O(log n)^ 2。 希望这会有所帮助。