堆排序算法是建立在堆这种数据结构的基础上,其实堆听着很高端,其实很简单,就是一个二叉树,但是又特殊条件,就是其父节点比孩子节点都大(或都小)的堆称为最大堆(最小堆),瞬间感觉很简单了,最简单的保存方法就是直接用数组来保存。
给出一组数,我们要使用堆排序,首先需要建堆,但是这一组数首先肯定是不满足上面堆的性质的,所以我们需要调整,让他满足堆得性质,变成一个堆,怎么调整呢?拿最大堆来说,就是对于一个节点,我们判断其孩子是否有比父亲节点大的,有的话,交换这两个值,这样父亲就比孩子都大了,当然交换完了之后可能以这个孩子为根节点的子树又不满足对性质了,继续交换直到都满足,为了减少交换的次数,我们可以从离叶子节点最近的节点开始交换,一层一层直到根节点。
比如这样一组数a[]={16,7,3,20,17,8},我们建堆
然后依次调整
排序算法-堆排序
最新推荐文章于 2024-04-20 19:56:06 发布