掌握堆(Heap)数据结构在 Python 中的高效应用
heapq 是 Python 标准库中的一个模块,用于实现最小堆(Min-Heap)。堆是一种特殊的完全二叉树,其中父节点的值总是小于或等于其子节点的值。该模块常用于实现优先队列、Top-K 问题等。
heapq.heappush(heap, item):将元素推入堆中。heapq.heappop(heap):弹出并返回堆中最小元素。heapq.heapify(x):将列表 x 原地转换为堆。heapq.heappushpop(heap, item):先 push 再 pop,效率更高。heapq.nlargest(n, iterable) / heapq.nsmallest(n, iterable):返回最大/最小的 n 个元素。import heapq
# 创建空堆
heap = []
# 插入元素
heapq.heappush(heap, 5)
heapq.heappush(heap, 1)
heapq.heappush(heap, 3)
print(heap) # [1, 5, 3]
# 弹出最小值
min_val = heapq.heappop(heap)
print(min_val) # 1
点击下方按钮,观察堆的变化:
heapq 实现的是最小堆。若需最大堆,可插入负值。heapify 为 O(n)。