Algorithm 算法分析,算法的时间复杂度 m=1; 因为(i=1;i
内循环将迭代1次,然后2次,然后…,然后2^n次。所以我们有Algorithm 算法分析,算法的时间复杂度 m=1; 因为(i=1;i,algorithm,time,asymptotic-complexity,Algorithm,Time,Asymptotic Complexity,内循环将迭代1次,然后2次,然后…,然后2^n次。所以我们有1+2+4+…+2^n=2^(n+1)-1=O(2^n)内循环的迭代 内部循环的一次迭代具有恒定的复杂性,因此求和内部循环的复杂性=O(2^n) 整个复杂性是O(2^n)我更喜欢从内到外看这些问题。除去m,我们有: m=1; for(i=1;i<=n;i++){ m=m*2; for(j=1;j<=m;j++){ do something that is O(1) } } 对于(i=
1+2+4+…+2^n=2^(n+1)-1=O(2^n)
内循环的迭代
内部循环的一次迭代具有恒定的复杂性,因此求和内部循环的复杂性=O(2^n)
整个复杂性是O(2^n)我更喜欢从内到外看这些问题。除去
m
,我们有:
m=1;
for(i=1;i<=n;i++){
m=m*2;
for(j=1;j<=m;j++){
do something that is O(1)
}
}
对于(i=1;i形式上和系统上,您可以使用Sigma表示法:
不可以。你可以乘以n
,或者得到求和的内部循环复杂度(更好),但这两种方法都意味着你计数过多。答案应该是O(2^n)
。我认为应该是O(2^n),正如蒂皮姆所解释的那样。
for(i=1;i<=n;i++){
for(j=1;j<=2^i;j++){
do something that is O(1)
}
}
for(i=1;i<=n;i++){
O(2^i)
}