heapq 模块,实现了堆序列算法,也叫优先序列算法。heap(堆)是每个父节点都小于等于子节点的树,同时所有节点k都满足 heap[k] <= heap[2*k+1] 和 heap[k] <= heap[2*k+2]

一般用法为先创建一个空列表[],再向其中添加删除元素

模块方法:
heapq.heappush(heap, item):向堆添加元素,元素会按大小排列其中
heapq.heappop(heap):弹出最小的元素,即heap[0]
heapq.heappushpop(heap, item):先push再pop,效率比两个分开做高
heapq.heapreplace(heap, item):先pop再push,效率比两个分开做高
heapq.nlargest(n, iterable[, key]):返回n个最大的元素,以list形式,key是一个接收一个参数的函数
heapq.nsmallest(n, iterable[, key]):返回n个最小的元素,其余同上


注意点:向堆里添加相同(优先级)的元素,可能会破坏堆的正常序列