堆排序(Heap Sort)是一种选择排序算法,通过将待排序的元素构建成一个最大堆(或最小堆),然后将堆顶元素与堆尾元素交换,将堆的大小减一,再调整堆,使其重新满足最大堆(或最小堆)的性质。重复以上步骤,直到堆中只剩下一个元素,即排序完成。
以下是一个使用堆排序的Python示例:
def heapify(arr, n, i):
largest = i
left = 2 i + 1
right = 2 i + 2
if left < n and arr[left] > arr[largest]:
largest = left
if right < n and arr[right] > arr[largest]:
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 = [12, 11, 13, 5, 6, 7]
heap_sort(arr)
print("Sorted array is:", arr)
CopyCopy
输出结果:
Sorted array is: [5, 6, 7, 11, 12, 13]
CopyCopy
这个示例中的heapify函数用于调整堆,heap_sort函数用于实现堆排序。你可以根据需要修改这个示例,以满足你的需求。