作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道Python中deque的get操作的时间复杂度。
我知道它在Python中是作为双向链接实现的。那是不是意味着它的时间复杂度是O(n)?
最佳答案
deque
的实现比双向链表更智能一些。它们是 Python 对象 block 的双向链接列表,其中左侧和右侧可能是不完整的 block 。
中间访问的 Big-O 成本仍然是 O(n)
,但它有一个常数除数(取决于实现, CPython 3.5 allocates blocks that can store 64 objects )。因此,如果您的 deque
有 1000 个成员,那么中间的访问仍然只涉及大约 7-8 次“链表式”遍历,而不是 500 次左右。如果双端队列较小(65 到 128 个元素,具体取决于空槽如何与头 block 和尾 block 对齐),则任何元素的查找成本都是相等的。
关于python - Python中双端队列随机访问的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39522787/
我是一名优秀的程序员,十分优秀!