堆排序属于选择排序,利用堆这种数据结构进行排序。
堆的概念
堆是一棵完全二叉树,分为两种:
- 大根堆(大顶堆):任一结点的值都大于等于其孩子结点的值
- 小根堆(小顶堆):任一结点的值都小于等于其孩子结点的值
基本思想
- 将待排序序列构造成初始堆(大根堆)
- 输出堆顶元素(最大值),与堆尾元素交换
- 调整剩余元素为新堆
- 重复直到全部输出
复杂度
- 时间复杂度:(建堆 ,每次调整 )
- 稳定性:不稳定
- 空间复杂度:
向具有 个关键字的堆中插入或删除一个元素的时间复杂度均为 。
堆排序属于选择排序,利用堆这种数据结构进行排序。
堆是一棵完全二叉树,分为两种:
向具有 个关键字的堆中插入或删除一个元素的时间复杂度均为 。