【发布时间】:2012-08-12 19:42:52
【问题描述】:
我正在学习 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
【问题讨论】:
-
你为什么会有那个内循环?为什么不直接 sum += i?
标签: java algorithm time-complexity