在 heapq 的文档中,它写道
heapq.heappushpop(堆,项目)
将项目推送到堆上,然后弹出并返回堆中最小的项目。组合操作比 heappush() 后单独调用 heappop() 运行效率更高。
为什么它更有效率?
它的效率也高得多吗?
heappop就是弹出第一个元素,然后将最后一个元素移到第一个位置填充,然后进行下沉操作,通过连续交换将元素向下移动。因此恢复头部
然后O(logn)
你headpush,将元素放在最后一个位置,然后像冒泡一样heappop但反转
另一个O(logn)
while heappushpop,弹出第一个元素,而不是将最后一个元素移动到顶部,而是将新元素放在顶部,然后做下沉动作。这与 几乎相同的操作heappop。
只有一个O(logn)
如上所述,尽管它们都是O(logn),但很容易看出比那时heappushpop更快。heappopheappush
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |