堆是一个完全二叉树,最大堆的节点值大于左右子节点,这样,根节点就是最大的节点
在求最大值的应用中很方便
由于是完全二叉树,堆结构可以很清楚的映射到数组中进行保存
堆构造的时候,在数组最后保存数据,然后调整结构
二叉排序树查找最大值还需要进行查找操作
删除操作的时候,为了保证结构稳定,把最后的节点填充到空位,再进行位置调整
了解堆的结构后,就比较容易理解堆排序了,以大根堆为例,根节点是最大值,把根节点和最后的节点交换一下,再进行数据调整,这个调整是一层层的进行的,时间复杂度是lgN,
参考
https://www.cnblogs.com/lsf2015/p/4735257.html
我用#优快云#这个app发现了有技术含量的博客,小伙伴们求同去《堆排序算法(图解详细流程)》, 一起来围观吧 https://blog.youkuaiyun.com/u010452388/article/details/81283998