2017-10-09 41 views
0
i := 1 
t := 0 
while i <= n: 
    t := t + i 
    i := 2i 

所以我把这个伪代码中的操作数目计为3n + 2,并且在这之后确定该算法必须是O(n)。我对while循环感到困惑,因为它小于或等于n而不是小于n,这是否会增加操作的数量?一个算法的大O表示法

+0

你缺少的是't:= 2i' ....对循环的* next *迭代的影响。重新计数。或者,计算'i'接管多次迭代的值。 –

回答

2

我算在这个伪代码为3N + 2

如何操作的数量?它应该是因为在每一步接近了很多O(日志(N)),(除了第一个步骤,这是通过)你基本上是这样做的:

我:= 3I

因此,我正在呈指数级增长,而不是线性增长。做n个真的很大(> 1000)的例子,看看我能多快赶上。

+0

哦,我现在明白了。谢谢 –