简介
堆排序(Heap Sort)是利用堆这种数据结构而设计的一种排序算法,堆是一个近似于完全二叉树的结构,并同时满足堆积的性质:子节点的键值总是小于(或大于)它的父节点。堆排序是一种选择排序,它是一种不稳定排序。
思路
在堆的结构中,堆中的最小值(最大值)总是位于堆的根结点。在堆排序中主要分为三步:
(1)创建大顶堆(BuildMaxHeap):将待排序元素列中的所有元素进行排列,生成一个大顶堆;
(2)将堆顶元素与末尾元素进行交换,将最大元素“沉”到元素列末端;
(3)调整顶堆,使其满足大顶堆定义;
(4)重复(2)(3)步骤,直至元素列有序。
例子:升序排序序列 [3, 5, 4, 1, 6, 2]
它对应的二叉树结构如下: