堆排序(Heap Sort)是一种利用堆数据结构进行排序的算法。它的时间复杂度为 $O(nlogn)$,并且具有空间复杂度为 $O(1)$ 的优点。
以下是使用 Python 实现堆排序的代码:
# 构建最大堆
def buildMaxHeap(arr):
for i in range(len(arr) // 2 - 1, -1, -1):
heapify(arr, i)
# 堆化操作
def heapify(arr, index):
largest = index
left = 2 * index + 1
right = 2 * index + 2
if left < len(arr) and arr[left] > arr[largest]:
largest = left
if right < len(arr) and arr[right] > arr[largest]:
largest = right
if largest!= index:
arr[largest], arr[index] = arr[index], arr[largest]
heapify(arr, largest)
# 堆排序函数
def heapSort(arr):
buildMaxHeap(arr)
n = len(arr)
for i in range(n - 1, 0, -1):
arr[0], arr[i] = arr[i], arr[0]
heapify(arr, 0)
# 测试示例
arr = [12, 11, 13, 5, 6]
heapSort(arr)
print("排序后的数组:", arr)
在这个示例中,我们首先定义了buildMaxHeap
函数来构建最大堆。然后,heapify
函数用于维护最大堆的性质。最后,heapSort
函数执行堆排序的过程。
在测试示例中,我们对给定的数组进行堆排序,并输出排序后的结果。
堆排序的时间复杂度为$O(nlogn)$,它在处理大型数据集时表现良好。希望这个示例对你有所帮助!如果你还有其他问题或需要进一步的解释,请随时告诉我。🤗