七、堆排序
- 堆排序,英文称 Heapsort,是指利用堆这种数据结构所设计的一种排序算法。堆排序在 top K问题中使用比较频繁。堆排序是采用二叉堆的数据结构来实现的,虽然实质上还是一维数组。二叉堆是一个近似完全二叉树。
- 二叉堆具有以下性质:
- 父节点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
- 每个节点的左右子树都是一个二叉堆(都是最大堆或最小堆)。
步骤
- 根据初始数组取构建一个完全二叉树,保证所有的父节点比子节点的数值大。
- 每次交换第一个和最后一个元素,输出最后一个元素(最大值),然后把剩下元素重新调整为最大堆。
动画演示
python代码实现如下:
七种常见排序算法效率比较
今日话题(第46天)
大家对于今天七种排序算法,有没有更深刻的理解呢?请在评论区留言和作者一起讨论!每日话题就是希望大家多交流,每个人都有在公众号发言的权力!希望你和我一起在这里成长!