1 堆排序的概述
利用堆的性质,我们可以实现对数组的排序。大小为n的数组看作一棵完全二叉树,将其创建成大根堆,交换堆顶与堆的最后一个元素,之后将前n-1个数据看作一棵完全二叉树,再次调整成堆,以此类推,直至只剩一个元素,这时已将数组排序完成。
示意图如下:
2 堆排序的算法
#include<stdio.h>
#include<stdlib.h>
typedef int HPDataType;
/*实现数组中两个位置值的交换*/
void Swap(HPDataType* arr, int idx1, int idx2) {
HPDataType tmp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = tmp;
}