嵌套循环的时间复杂度

时间:2014-11-11 01:47:51

标签: algorithm time-complexity

我试图找到以下算法的最坏情况时间复杂度。

for (i = N*N; i>1; i = i /2 ){
   for ( j = 0; j < i; j++){
   counter++;
   }
}

我设法弄清楚内部循环将以对数方式执行(虽然倒退,但我认为这无关紧要)但我真的不确定如何接近外循环。

2 个答案:

答案 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。 希望这会有所帮助。