【发布时间】:2014-09-07 04:34:37
【问题描述】:
int sum = 0;
for (int i = 1; i <= N; i = i*2)
for (int j = 1; j <= N; j = j*2)
for (int k = 1; k <= j; k++)
sum++;
根据解决方案是 NlogN。但是,我认为这只是 logN。 i for 循环迭代 logN 次,因为每次迭代 i 加倍。 j for 循环与i for 循环相同,因此它也会迭代 logN 次。最后是k for 循环,因为它被设置为小于或等于j,它将迭代j 的相同次数,因此,我们还有另一个logN 迭代。将三者相乘,我们得到 logN * logN * logN 总迭代次数或 (logN)^3 的复杂度。为什么我的思维过程不正确?
【问题讨论】: