while循环伪代码的运行时

时间:2014-02-01 16:48:09

标签: analysis pseudocode

我有一个伪代码,我正在尝试进行详细分析,分析运行时和渐近分析:

sum = 0
i = 1
while (i ≤  n){

    sum = sum + i
    i = 2i
}
return sum

我的作业要求我为每一行编写成本/运行时,将它们加在一起,并找到运行时的Big-Oh表示法。我的分析目前看起来像这样:

sum = 0                1
long i = 1                  1
while (i ≤  n){        log n + 1

   sum = sum + i       n log n
   i = 2i              n log n
}     
return sum             1

=> 2 n log n + log n + 4 O(n log n)

这是对的吗?另外:我应该在while循环中使用n ^ 2吗?

1 个答案:

答案 0 :(得分:1)

由于整数运算,运行时是

O(floor(ln(n))+1) = O(ln(n)).

让我们逐步完成您的伪代码。考虑n = 5的情况。

iteration#  i   ln(i)   n
-------------------------
1           1   0       5
2           2   1       5
3           4   2       5

通过检查,我们看到了

iteration# = ln(i)+1

总结如下:

sum = 0             // O(1)
i = 1               // O(1)

while (i ≤  n) {    // O(floor(ln(n))+1)    

    sum = sum + i   // 1 flop + 1 mem op = O(1)
    i = 2i          // 1 flop + 1 mem op = O(1)
}
return sum          // 1 mem op = O(1)