0
i := 1
t := 0
while i <= n:
t := t + i
i := 2i
所以我把这个伪代码中的操作数目计为3n + 2,并且在这之后确定该算法必须是O(n)。我对while循环感到困惑,因为它小于或等于n而不是小于n,这是否会增加操作的数量?一个算法的大O表示法
i := 1
t := 0
while i <= n:
t := t + i
i := 2i
所以我把这个伪代码中的操作数目计为3n + 2,并且在这之后确定该算法必须是O(n)。我对while循环感到困惑,因为它小于或等于n而不是小于n,这是否会增加操作的数量?一个算法的大O表示法
我算在这个伪代码为3N + 2
如何操作的数量?它应该是因为在每一步接近了很多O(日志(N)),(除了第一个步骤,这是通过)你基本上是这样做的:
我:= 3I
因此,我正在呈指数级增长,而不是线性增长。做n个真的很大(> 1000)的例子,看看我能多快赶上。
哦,我现在明白了。谢谢 –
你缺少的是't:= 2i' ....对循环的* next *迭代的影响。重新计数。或者,计算'i'接管多次迭代的值。 –