我正在学习 coursera 上的算法课程,但我被困在这个特殊问题上。我应该找到这段代码的时间复杂度。
int sum = 0
for (int i = 1; i <= N*N; i = i*2)
{
for (int j = 0; j < i; j++)
sum++;
}
我在 Eclipse 本身中检查了它,对于任何 N 值,执行 sum 语句的次数都小于 N
final value of sum:
for N=8 sum=3
for N=16 sum=7
for N=100000 sum=511
所以时间复杂度应该小于 N 但给出的答案是 N 的 2 次幂,这怎么可能?
到目前为止我做了什么:
第一个循环将运行 log(N^2) 次,因此第二个循环将执行 1,2,3.. 2 logN