堆Heap有大堆与小堆的概念:小堆会自动将堆中的最小值放至出口处(最左端),每次pop()的时候都将删除最小值。大堆则相反。
通常调用Python中的heapq包来实现堆Heap:
heapify():将列表List转变为堆Heap(默认转变为小堆)
heappush( , ):添加一个值在堆中
heappop():删除一个值在堆中
nlargest():前n个最大值
nsmallest():前n个最小值
from heapq import *
a = [3, 2, 4]
heapify(a)
print(a) -------------------->[2, 3, 4]
heappush(a, 1)
print(a) -------------------->[1, 2, 4, 3]
heappop(a)
print(a) -------------------->[2, 3, 4]
print(nlargest(2, a))-------->[4, 3]
print(nsmallest(2, a))------->[2, 3]
以上是小堆的实现,由于heapq没有提供大堆,可以采取乘-1的形式实现。