循环的时间复杂性

时间:2014-03-14 18:54:21

标签: algorithm big-o time-complexity analysis

我试图找到for循环的时间复杂度。下面是循环细节。

for(int i=N;i>1;i=i/2)
{
   for(int k=0;k<i;k++){
     sum++;
   }
}

以下是该问题的任何发现。如果我要去训练,请纠正我。

内部循环将超越N+N/2+N/4+N/8....

所以tn=ar^(n-1)。因此,替换Tn=1a=Nr=1/2

1=N(1/2)^(n-1)

因此

1/2N=(1/2)^n

因此内循环的总和是GP。 Sn=a(1-r^n)/(1-r) 替换a=N,r=1/2,我们得到

Sn=N(1-(1/2N))/(1-1/2)

因此Sn=2N-1

我不确定复杂性是否为N

请帮忙

感谢。

1 个答案:

答案 0 :(得分:1)

以下是推断与算法相关的增长顺序的正式方法(Sigma Notation)(使用C的MinGW2.95编译器进行实验证实)。

enter image description here