简单选择排序
堆排序
大根堆与小根堆
把堆看作一个完全二叉树
- 大根堆:父节点大于两个子节点
- 小根堆:父节点小于两个子节点
建立大根堆
-
下沉操作:对于节点n
- 节点n大于所有的孩子或者节点n没有孩子,就不用操作直接退出,否则进行下面
- 交换节点n与节点n的大孩子m,然后对m进行同样的操作
-
对于一个无序堆:从最后一个度不为0的节点开始一直递减到根节点,依次进行下沉操作
大根堆的插入
-
上升操作:对节点n
- 比较节点n与其父亲,如果小于等于其父亲或者节点n已经是根节点了,则不用操作退出。否则进行下面步骤
- 交换节点n与其父亲m,然后对m进行上升操作
-
首先插入到最后的位置,然后进行上升操作
大根堆的删除
- 删除首个元素:交换根节点与最后一个节点,然后对根节点进行下沉操作