堆排序数据结构代码
时间: 2024-12-23 15:20:02 浏览: 14
堆排序是一种基于比较的排序算法,它利用了堆这种数据结构的特点来进行操作。在计算机科学中,堆通常是一个完全二叉树,其中每个节点的值都大于(最大堆)或小于(最小堆)其子节点。下面是Python语言的一个简单堆排序实现:
```python
def heapify(arr, n, i):
largest = i
l = 2 * i + 1
r = 2 * i + 2
if l < n and arr[i] < arr[l]:
largest = l
if r < n and arr[largest] < arr[r]:
largest = r
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
def heap_sort(arr):
n = len(arr)
# Build a maxheap
for i in range(n // 2 - 1, -1, -1):
heapify(arr, n, i)
# Extract elements one by one
for i in range(n - 1, 0, -1):
arr[i], arr[0] = arr[0], arr[i] # Swap
heapify(arr, i, 0)
# 使用示例
arr = [8, 5, 2, 9, 1]
heap_sort(arr)
print("Sorted array is:", arr)
阅读全文