堆排序(Heap Sort)
请先看看什么是堆, 以及如何实现二叉堆 : 《恋上数据结构与算法》笔记(十七):二叉堆
一、概念堆排序
可以认为是对选择排序算法
中寻找最小(大)元素
的优化
。- 堆排序是利用
堆
这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn)
,它也是不稳定排序
。 - 一般
升序
采用大顶堆
,降序
采用小顶堆
。
堆排序步骤 :
- 交换堆顶与尾元素。
- 堆的元素数量减
1
。 - 对
0
位置进行siftDown
操作。 - 重复执行
1-3
操作,直到堆
的元素数量为1
。