文章目录
heapq
heapq
是 Python 中的一个内置模块,提供了对堆数据结构的支持。堆是一种特殊的树形数据结构,具有以下特点:
- 在堆中,父节点的值总是小于或者大于它的子节点的值,这取决于是最小堆还是最大堆。
- 堆是一个完全二叉树,通常使用数组来实现。
heapq
模块提供了一系列函数,可以在普通的列表上模拟堆的行为。下面是一些 heapq
库的常用函数及其用法:
-
heapify(iterable):将一个可迭代对象转换为堆数据结构。
import heapq heap = [3, 1, 4, 1, 5, 9, 2, 6, 5] heapq.heapify(heap) print(heap) # 输出:[1, 1, 2, 5, 3, 9, 4, 6, 5]
-
heappush(heap, item):向堆中添加一个新元素。
import heapq heap = [3, 1, 4] heapq.heappush(heap, 2) print(heap) # 输出:[1, 2, 4, 3]
-
heappop(heap):从堆中弹出并返回最小元素。
import heapq heap = [1, 2, 4, 3] smallest = heapq.heappop(heap) print(smallest) # 输出:1 print(heap) # 输出:[2, 3, 4]
-
heapreplace(heap, item):弹出并返回最小元素,并将新元素推入堆中。
import heapq heap = [1, 2, 4, 3] smallest = heapq.heapreplace(heap, 5) print