【发布时间】:2011-07-09 05:32:54
【问题描述】:
我这里有一个小程序:
Given any n:
i = 0;
while (i < n) {
k = 2;
while (k < n) {
sum += a[j] * b[k]
k = k * k;
}
i++;
}
这个的渐近运行时间是O(n log log n)。为什么会这样?我知道整个程序至少会运行 n 次。但我不确定如何找到 log log n。内循环取决于 k * k,所以它显然会小于 n。如果每次都是 k / 2,它只会是 n log n。但是你怎么知道log log n的答案呢?
【问题讨论】:
-
对于 WHY 的更详细解释,这里有一个问题要寻找:stackoverflow.com/questions/487258/…