这个嵌套循环的Big-O是什么?

时间:2016-10-24 02:42:04

标签: time-complexity big-o complexity-theory

int z=1; 
for(int i=0;i*i<n;i++){
  z*=3;
  for(int j=0;j<z;j++){
   // Some code
  }
}

答案是O(3 ^ n)。 这是对的吗?如何计算嵌套循环的时间复杂度?

2 个答案:

答案 0 :(得分:1)

外循环:我从1到sqrt(n); 内循环:j,z最多为3 ^(sqrt(n));

&#34;一些代码&#34;将运行1 + 3 + 3 ^ 2 + ... + 3 ^(sqrt(n))次

let sum = 1 + 3 + 3^2 + ... + 3^(sqrt(n))
sum - 3*sum = 1 - 3(sqrt(n) + 1)
sum = 1 - 3(sqrt(n) + 1) / (1-3) = 2( 3^(sqrt(n)+1) - 1 )

2(3 ^(sqrt(n)+1)-1)&lt;&lt; O(3 ^ sqrt(n))

O(3 ^ sqrt(n))更准确

答案 1 :(得分:1)

您可以通过这种方式使用Sigma表示法解决问题:

enter image description here