入队算法:
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)?
答案 0 :(得分:3)
是O(1)和Θ(1)。(除非x
或Q.length
有无限位。)
O(1)表示该算法的时间复杂度至多为常数。这是上限。
对于您的情况,假设算法需要一段时间t
将x
插入固定地址(Q.tail
),然后将地址增加1.这很容易看到根据{{1}}或t
的不同,n
不会增加,Q
不能无穷大。所以这个算法的上限是 O(1),因为:
并且,很容易看出,无论t
或n
是什么,Q
必须长于让机器工作的恒定时间。 t
不可能是无穷小的。因此该算法的下限是Ω(1)。这意味着该算法的时间复杂度至少为常数。
最后,定义为如果T(F(n))= O(1)且T(F(n))=Ω(1),则T(F(n))=Θ( 1)即可。 (如果您忘了它,请完成算法简介的第一章。)