1. 堆排序(heap sort)
如果在一个连续表里存储的数据是一个小顶堆,按优先队列的操作方式反复弹出堆顶元素,能够得到一个递增序列。
也即对这个线性表而言,物理上并不是有序的,是逻辑上的有序。(很高级的做法)
基于这种技术完成排序工作,还需要解决两个问题?
连续表里的初始元素序列通常不满足堆序;
- 优先队列的初始建堆
选出的元素存放在哪里?能不能利用已有空间?
- 小顶堆 ⇒ 从大到小排序
- 大顶堆 ⇒ 从小到大排序
如果在一个连续表里存储的数据是一个小顶堆,按优先队列的操作方式反复弹出堆顶元素,能够得到一个递增序列。
也即对这个线性表而言,物理上并不是有序的,是逻辑上的有序。(很高级的做法)
基于这种技术完成排序工作,还需要解决两个问题?
连续表里的初始元素序列通常不满足堆序;
选出的元素存放在哪里?能不能利用已有空间?