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)。 这是对的吗?如何计算嵌套循环的时间复杂度?
答案 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)