堆是一种基于树结构的数据结构,具有高效的插入和删除操作。

堆本质是完全二叉树,常用的两种堆分别是:

  • 最大堆:父节点的值小于或等于其子节点的值
  • 最小堆:父节点的值大于或等于其子节点的值

堆通常用于实现优先队列或者堆排序等算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import heapq

# 创建最小堆
heap = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
heapq.heapify(heap)

# 插入元素
heapq.heappush(heap, 0)

# 弹出最小元素
min_element = heapq.heappop(heap)

print("Min Heap:", heap)
print("Min Element:", min_element)

优先队列/堆

堆排序