- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 heapq 的文档中,它写道
heapq.heappushpop(heap, item)
Push item on the heap, then pop and return the smallest item from the heap. The combined action runs more efficiently than heappush() followed by a separate call to heappop().
为什么效率更高?
而且它的效率要高得多吗?
最佳答案
heappop
是先弹出第一个元素,然后移动最后一个元素填充到第一个位置,然后做下沉操作,通过连续交换将元素向下移动。从而恢复头部
它是 O(logn)
然后你headpush
,把元素放在最后,然后冒泡像 heappop
但相反
另一个O(logn)
在heappushpop
时,弹出第一个元素,而不是将最后一个元素移到顶部,而是将新元素放在顶部,然后做一个下沉的 Action 。这与 heappop
的操作几乎相同。
只有一个O(logn)
尽管它们都是 O(logn)
,但更容易看出 heappushpop
比 heappop
然后 heappush
.
关于python-3.x - heapq.heappushpop 如何比 python 中的 heappop 和 heappush 更高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228574/
我有一个定义为列表列表的简单堆。我使用 heapq 模块中的 heapop 来提取具有最小键的列表(我了解到它隐式地是内部列表的第一个元素)。但在以下情况下,弹出操作似乎给出了异常结果。 谁能解释一下
我试图在我的程序中使用 Python 模块 heapq,但我在使用 heapq.heappop() 时遇到了一个奇怪的问题。该函数似乎没有返回堆中的最小元素。看看下面的代码: Python 2.7.1
对于列表,heappop 会弹出最前面的元素。从列表的前面删除一个元素的时间复杂度为 O(n)。我错过了什么吗? 最佳答案 heappop() 重新排列列表中的 log(n) 元素,这样它就不必移动每
在 heapq 的文档中,它写道 heapq.heappushpop(heap, item) Push item on the heap, then pop and return the smalle
我是一名优秀的程序员,十分优秀!