Python中deque中随机访问的时间复杂度

时间:2016-09-16 02:03:06

标签: python big-o deque

我想知道Python中deque的get操作的时间复杂性。

我知道它是作为Python中的双重链接实现的。这是否意味着它的时间复杂度是O(n)?

1 个答案:

答案 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个元素,取决于空插槽如何与头部和尾部块对齐),那么查找任何元素的成本相等。