python中的小根堆模块heapq

heapq模块

  • heapify(list)建立小根堆
  • heappush(heap, item)推入元素到堆中
  • heappop(heap)从堆中弹出元素
  • heapreplace(heap,item)弹出并返回堆中最小元素,同时推入元素
  • nlargest(n,heap,key=None)返回堆中前n个最大的元素
  • nsmallest(n,heap)

小根堆由二叉树表示,其中每个节点均小于其左右节点的值

heapify(list)建立小根堆

heapq.heapify()以线性时间讲一个列表转化为小根堆
python中的小根堆模块heapq_第1张图片

heapq里面没有直接提供建立大根堆的方法,可以采取如下方法:每次push时给元素加一个负号(即取相反数),此时最小值变最大值,反之亦然,那么实际上的最大值就可以处于堆顶了,返回时再取负即可。
python中的小根堆模块heapq_第2张图片

heappush(heap, item)推入元素到堆中

python中的小根堆模块heapq_第3张图片

heappop(heap)从堆中弹出元素

python中的小根堆模块heapq_第4张图片

heapreplace(heap,item)弹出并返回堆中最小元素,同时推入元素

python中的小根堆模块heapq_第5张图片

nlargest(n,heap,key=None)返回堆中前n个最大的元素

nsmallest(n,heap)

python中的小根堆模块heapq_第6张图片

你可能感兴趣的:(python,python,算法)