堆排序法的python实现;
时间: 2024-12-24 18:34:23 浏览: 9
堆排序是一种基于比较的排序算法,它通过构建最大堆(或最小堆)来完成排序。以下是堆排序的一个简单Python实现:
```python
def heapify(arr, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
# 如果左孩子存在并且大于根节点
if left < n and arr[i] < arr[left]:
largest = left
# 如果右孩子存在并且大于当前最大值
if right < n and arr[largest] < arr[right]:
largest = right
# 如果根节点不是最大值,则交换它们并继续调整堆
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
# 主函数:堆排序
def heap_sort(arr):
n = len(arr)
# 构建最大堆
for i in range(n // 2 - 1, -1, -1):
heapify(arr, n, i)
# 从堆顶开始逐步取出元素放到正确位置
for i in range(n - 1, 0, -1):
arr[i], arr[0] = arr[0], arr[i] # 交换根节点和最后一个元素
heapify(arr, i, 0) # 对剩余部分重新调整成堆
# 示例
arr = [4, 10, 3, 5, 1]
heap_sort(arr)
print("排序后的数组:", arr)
阅读全文