它的是复杂度为:O (nlgn);
1.从最后一个非叶子节点开始,比较三个元素(非叶子节点和它的左右节点)的大小
如果这个非叶子节点最大,不用调整这颗子树,如果不是,则把这三个元素中最大的那个交换到这个非叶子节点的父节点,另一个无需变化。
2.接着都已三个小节点为最小单位,从右子树逐级递归到左子树最后调整中间的。可以形象的表示为:
这样一来,堆排序的第一步,构建一个初始大根堆的任务就完成了,下面进行第二步:
执行堆排序的具体步骤:
交换头节点与最后一个叶子节点的位置,并故定交换后的叶子节点的节点不变,其余调整成大根堆。
第一趟排序就完成了。
重复上述操作,就可以实现堆排序啦,不过考试只会考前面几步,学会调整就好啦。