定义
堆排序(Heap Sort)是利用堆这种数据结构设计的排序算法。堆是一个近似完全二叉树的结构,满足堆的性质:父结点的键值总是大于(大根堆)或小于(小根堆)子结点的键值。
算法步骤
- 建堆:将无序序列构建成堆(从最后一个非叶子结点开始向下调整)
- 排序
- 将堆顶元素(最大/最小值)与末尾元素交换
- 堆大小减 1,对堆顶元素进行向下调整
- 重复直到堆大小为 1
时间复杂度
- 建堆:
- 每次调整:
- 总复杂度:
空间复杂度
,原地排序
稳定性
不稳定
特点
- 最坏、平均、最好情况时间复杂度均为
- 适合数据量大的场景