嵌套循环的复杂度除以2

时间:2013-05-25 10:06:31

标签: c loops big-o

我试图找出使用Big O表示法的for循环的复杂性。我之前在其他课程中已经完成了这个,但是这个比其他课程更严格,因为它是在实际的算法上。代码如下:

for(i=n ; i>1 ; i/=2) //for any size n
{
    for(j = 1; j < i; j++)
    {
      x+=a
    }
}

我已经到了,第一个循环是O(log_2(n))。至于第二个循环,我有点迷路!感谢分析方面的帮助。

3 个答案:

答案 0 :(得分:4)

要正式解决算法的时间复杂度,您可以使用以下步骤使用Sigma表示法:

enter image description here

另外,看看Jauhar博士对这个非常有趣的document的最后一张幻灯片。

答案 1 :(得分:2)

内环的迭代总数是n + n / 2 + n / 4 + ... + 1,约为2n。所以复杂性是O(n)。

答案 2 :(得分:2)

复杂性应为O(n)。它形成一个几何系列(不完全但大致)。

循环运行n+ n/2 + n/4 + .... +1,约为2n

O(2n) = O(n)