堆排序(Heap Sort)是一种基于堆数据结构的比较排序算法。堆是一个近似完全二叉
树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或大于)它的
父节点。
在堆排序算法中,我们首先将待排序的序列构造成一个大顶堆(对于升序排序)或小
顶堆(对于降序排序),此时整个序列的最大值(对于大顶堆)或最小值(对于小顶
堆)就位于堆的根节点。然后,我们将堆的根节点与堆的最后一个节点交换,此时堆
的最后一个节点就是最大值或最小值。接着,我们对堆中剩余的 n-1 个元素重新构造
一个堆,这样会得到 n 个元素中的次大值或次小值。如此反复执行,便能得到一个有
序序列了。
以下是用 C#实现堆排序的代码示例:
using System;
class HeapSort
{
// 主方法
static void Main()
{
int[] arr = { 12, 11, 13, 5, 6, 7 };
int n = arr.Length;
Console.WriteLine("未排序数组:");
PrintArray(arr);
HeapSortAlgorithm(arr, n);
Console.WriteLine("已排序数组:");
PrintArray(arr);
}
// 堆排序算法