[Python标准库]heapq——堆排序算法
作用:headpq 模块实现了一个适用于 Python 列表的最小堆排序算法。
Python 版本:2.3 版本中新增,并在 2.5 版本中做了补充
堆(heap)是一个树形数据结构,其中子节点与父节点是一种有序关系。二叉堆(Binary heap)可以使用如下方式组织的列表或数组表示,即元素 N 的子元素位于 2*N+1 和 2*N+2(索引从 0 开始)。这种布局允许原地重新组织堆,从而不必在增加或删除元素时分配大量内存。
最大堆(max-heap)确保父节点大于或等于其两个子节点。最小堆(min-heap)要求父节点小于或等于其子节点。Python 的 heapq 模块实现了一个最小堆。
示例数据
示例将使用 heapq_heapdata.py 中的数据。
作用:headpq 模块实现了一个适用于 Python 列表的最小堆排序算法。
Python 版本:2.3 版本中新增,并在 2.5 版本中做了补充
堆(heap)是一个树形数据结构,其中子节点与父节点是一种有序关系。二叉堆(Binary heap)可以使用如下方式组织的列表或数组表示,即元素 N 的子元素位于 2*N+1 和 2*N+2(索引从 0 开始)。这种布局允许原地重新组织堆,从而不必在增加或删除元素时分配大量内存。
最大堆(max-heap)确保父节点大于或等于其两个子节点。最小堆(min-heap)要求父节点小于或等于其子节点。Python 的 heapq 模块实现了一个最小堆。
示例数据
示例将使用 heapq_heapdata.py 中的数据。
# This data was generated with the random module.
data = [19, 9, 4, 10, 11]
堆输出使用 heapq_showtree.py 打印。
import math
from cStr