目录
堆排序就是不断抽离堆顶元素(剩余队列中最大者),继续构造大顶堆
堆排序核心在于构造堆,本文以构造大顶堆为例
堆
说白了就是完全二叉树,
除最后一层外,其余各层都是满的,每层数量为(2^(h-1))
最后一层必须从左到右依次放置不能留空
构造大顶堆
大顶堆,就是每个父节点都比子节点要大,即任何子树都是大顶堆
比如给你数组,12345
遍历所有非叶子节点都与其孩子进行比较,子节点大于父节点时,进行替换
遍历可以从下到上,也可以从上到下。
本文采用从下到上,从右到左的方式遍历,数组指针向左移动即可,每次遍历比较确保比较后的所有子树都是大顶堆。
第一种方式
第二种方式
在每次调整堆时,非叶子节点都与其孩子进行比较