为什么以下算法的运行时间是O(1)而不是Θ(1)?

时间:2013-12-19 16:21:56

标签: algorithm

入队算法:

ENQUEUE(Q,x)  
1.Q[Q.tail]=x  
2.if Q.tail==Q.length  
3.    Q.tail=1  
4.else Q.tail=Q.tail+1 

时间复杂度为O(1) 我的问题是为什么它不是Θ(1)?

1 个答案:

答案 0 :(得分:3)

是O(1)和Θ(1)。(除非xQ.length有无限位。)


O(1)表示该算法的时间复杂度至多为常数。这是上限。

对于您的情况,假设算法需要一段时间tx插入固定地址(Q.tail),然后将地址增加1.这很容易看到根据{{​​1}}或t的不同,n不会增加,Q不能无穷大。所以这个算法的上限是 O(1),因为:

enter image description here

并且,很容易看出,无论tn是什么,Q必须长于让机器工作的恒定时间。 t不可能是无穷小的。因此该算法的下限是Ω(1)。这意味着该算法的时间复杂度至少为常数。

enter image description here

最后,定义为如果T(F(n))= O(1)且T(F(n))=Ω(1),则T(F(n))=Θ( 1)即可。 (如果您忘了它,请完成算法简介的第一章。)

enter image description here