heapq
是 Python 的一個內置模塊,提供了堆隊列算法的實現,也稱為優先隊列算法。以下是關于 heapq
模塊的詳細使用說明。
基本概念
- 堆:一種特殊的二叉樹結構,滿足父節點總是小于或等于其子節點(最小堆)
- 特性:
- 堆是一個完全二叉樹
- 堆中每個節點的值都小于或等于其子節點的值(最小堆)
- 根節點總是堆中的最小元素
1. 添加元素
heap = []
heapq.heappush(heap, 5) # 添加元素
heapq.heappush(heap, 3)
heapq.heappush(heap, 7)
heapq.heappush(heap, 1)
print(heap) # 輸出可能是 [1, 3, 7, 5]
2. 彈出最小元素
smallest = heapq.heappop(heap)
print(smallest) # 輸出 1
print(heap) # 輸出可能是 [3, 5, 7]
3. 查看最小元素(不彈出)
smallest = heap[0]
print(smallest) # 輸出 3
4. 合并堆
heap1 = [1, 3, 5]
heap2 = [2, 4, 6]
merged = list(heapq.merge(heap1, heap2)) # 返回一個迭代器
print(list(merged)) # 輸出 [1, 2, 3, 4, 5, 6]