我想知道Python中deque的get操作的时间复杂性。
我知道它是作为Python中的双重链接实现的。这是否意味着它的时间复杂度是O(n)?
答案 0 :(得分:5)
deque
的实现比双链表更智能一些。它们是Python对象的块的双向链接列表,其中左侧和右侧可能是不完整的块。
中间访问的Big-O成本仍为O(n)
,但它具有常数除数(取决于实现,CPython 3.5 allocates blocks that can store 64 objects)。因此,如果您的deque
有1000个成员,则中间访问仍然只涉及大约7-8个“链表式”遍历,而不是500个。如果deque
很小(65到128个元素,取决于空插槽如何与头部和尾部块对齐),那么查找任何元素的成本相等。