什么是大顶堆?
大顶堆(Max Heap)是一种特殊的完全二叉树,其中每个父节点的值都大于或等于其子节点的值。
在 Python 中,标准库 heapq 默认实现的是小顶堆(Min Heap),但我们可以通过取负数的方式模拟大顶堆。
Python 实现大顶堆
以下是一个使用 heapq 模拟大顶堆的简单示例:
import heapq
# 创建一个空列表作为堆
max_heap = []
# 插入元素(取负)
heapq.heappush(max_heap, -10)
heapq.heappush(max_heap, -20)
heapq.heappush(max_heap, -5)
# 弹出最大值(取负还原)
max_value = -heapq.heappop(max_heap)
print("最大值:", max_value) # 输出: 20
交互式演示
点击下方按钮,向大顶堆中插入随机数并查看当前最大值。
堆内容将显示在这里...
常见应用场景
- Top-K 问题(如找出最大的 K 个元素)
- 优先队列(任务调度)
- 堆排序(Heapsort)
- 图算法(如 Dijkstra 最短路径)
注意事项
- Python 的
heapq是小顶堆,需用负数技巧实现大顶堆。 - 堆不是排序列表,仅保证堆顶为最值。
- 插入和删除的时间复杂度均为 O(log n)。