堆排序是使用二叉堆这样强大的数据结构来实现的排序
回顾:二叉堆的特性
- 二叉堆本质上是一种完全二叉树
- 最大堆(最小堆)的堆顶是整个堆中的最大(最小)元素
原理
当我们删除一个最小堆的堆顶的时候是把堆顶的元素删除,并把最后一个元素拿到堆顶
这时如果我们不把堆顶元素删除,而是把堆顶和最后一个元素替换,并把堆的有效长度减1
之后向下调整67
,使堆保持稳定
重复上述操作将现在有效长度内的最后一位和堆顶互换,有效长度再减1
向下调整堆顶,保持堆的稳定性
继续互换堆顶,有效长度减1
堆排序是使用二叉堆这样强大的数据结构来实现的排序
当我们删除一个最小堆的堆顶的时候是把堆顶的元素删除,并把最后一个元素拿到堆顶
这时如果我们不把堆顶元素删除,而是把堆顶和最后一个元素替换,并把堆的有效长度减1
之后向下调整67
,使堆保持稳定
重复上述操作将现在有效长度内的最后一位和堆顶互换,有效长度再减1
向下调整堆顶,保持堆的稳定性
继续互换堆顶,有效长度减1