这个问题是为了修改过去的试卷,只是想知道我是否做得对。
我是新手,所以我对更复杂的问题有点困难。这是其中之一...
如果有人能详细说明,我将非常感激...... 所以我必须找出这段代码的复杂性......
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).. 有人可以帮我这个吗?
答案 0 :(得分:1)
第二个循环的迭代次数是 $$ 1 + 3 + 9 + ... + m $$ 其中$ m $约为$ n $。这总和为$ \ Theta(n)$。然后最里面的循环是Theta(n)的另一个因子。所以$ \ Theta(n ^ 2)$。
答案 1 :(得分:1)
确定算法时间复杂度的正式方法: