7.堆和堆排序
(1) 比较器
- 重载运算符
一个学生类按照年龄等排序。
- 比较器可以用在有序表中
(2) 堆
- PQ和heap实现一样
- 数组变为完全二叉树:i的左孩子:2i+1,右孩子:2i+2,父节点:(i-1)/2
- 堆是完全二叉树:大根堆、小根堆
https://github.com/algorithmzuo/algorithmbasic2020/tree/master/src/class06
Q:如果一个正常的堆,中间的一个数值改变,如何调整为正常的堆?
A:先进行heapinsert() 再进行heapify() :向上看是否能够上移动,向下看是否能够下移(顺序可以调换)
(2) 堆排序
大根堆的根节点依次落到最后一个节点,剩余的节点调整为大根堆
创建一个size=k的小根堆,不断出不断加
8.加强堆
(1)
A:
开始位置 从小到大排序
小根堆存储结束位置的值