【发布时间】:2017-11-13 01:01:24
【问题描述】:
我这里有以下算法伪代码:
for (j = 2 to n){
k=1
while (k<j^2) {
k=2*k
}
}
我学的方法只是逐行分析,所以第1行我可以看到它运行了n-2次,第2行符文运行了n-1次。
这里让我感到困惑的是 while 循环,我不太确定如何处理它。我认为它自己运行 log( j2 ) 次,所以我得到类似 (n-1) * log( j2 ) 第 3 行?但是我们不应该以 n 的形式拥有一切吗?
【问题讨论】:
-
尝试将 while 循环的迭代计数形式化为数学系列。
-
内部循环将像这样运行:
1 + 4 + 9 +16 +25 + 36表示二次因子,所以插入 n,你看到它执行了多少次?不是 logN,如果是 logN 就是N/2。