嵌套for循环的时间复杂度?

时间:2013-11-06 18:24:19

标签: big-o time-complexity

这个问题是为了修改过去的试卷,只是想知道我是否做得对。

我是新手,所以我对更复杂的问题有点困难。这是其中之一...

如果有人能详细说明,我将非常感激...... 所以我必须找出这段代码的复杂性......

cout = 0;
for(int i=1 ; i<=n ; i*=3)
   for(int j=1 ; j<=i; j++)
      for(int k=1 ; k<=n ; k++)
          count++;

所以,我试着这样做......我得到了O(n ^ 2logn).. 它不正确......答案应该是O(n ^ 2).. 有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

第二个循环的迭代次数是 $$ 1 + 3 + 9 + ... + m $$ 其中$ m $约为$ n $。这总和为$ \ Theta(n)$。然后最里面的循环是Theta(n)的另一个因子。所以$ \ Theta(n ^ 2)$。

答案 1 :(得分:1)

确定算法时间复杂度的正式方法:

enter image description here