Heap queue algorithm

Posted imageSet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Heap queue algorithm相关的知识,希望对你有一定的参考价值。

import heapq

heap = []
heapq.heappush(heap, item)#将item加入heap,保持堆结构
heapq.heappop(heap)#弹出堆顶最小元素,如果heap为空,抛出一个IndexError,不弹出只调用这个最小元素,使用heap[0]
heapq.heappushpop(heap, item)#将item加入heap,并弹出堆顶最小元素,比heappush()和heappop()结合使用更有效率
heapq.heapify(x)#将列表x转化成一个堆
heapq.heapreplace(heap, item)#先弹出堆顶最小元素,再将item加入heap,与heappushpop()的操作顺序相反,同样,比heappush()和heappop()结合使用更有效率
heapq.merge(*iterables, key=None, reverse=False)#将多个列表合并,并进行堆调整,返回的是合并后的列表的迭代器
heapq.nlargest(n, iterable, key=None)#返回最大的n个元素(Top-K问题)
heapq.nsmallest(n, iterable, key=None)#返回最小的n个元素(Top-K问题)

 

以上是关于Heap queue algorithm的主要内容,如果未能解决你的问题,请参考以下文章

Priority queue and Heap

为啥 max Heap 初始化语法与 min Heap 通过 priority_queue 不同?

在 boost::heap::priority_queue 中推送结构对象时出错

STL heap和first_queue(未完结)

PAT (Advanced Level) 1098. Insertion or Heap Sort (25)

Heap & Priority Queue