(一)思路:
堆是一种数据结构,可以把堆看成一个完全二叉树,这颗二叉树满足:任何一个非叶子结点的值都不大于(或小于)其叶子结点的值。如果父节点大孩子小那就是 大项堆,反过来则是小项堆。
堆排序属于选择排序。
基本思想以及步骤
将待排序列构造成一个大项堆(小项堆),此时最大就是堆的根节点,将其与最后一个叶节点交换位置,此时末尾元素就是最大值。接着将剩余的n-1个元素继续构造堆,这样会得到n个元素的最小值,反复执行就可以得到一个有序数列。
(二)代码:
准备工作:

堆
堆是一种数据结构,可以把堆看成一个完全二叉树,这颗二叉树满足:任何一个非叶子结点的值都不大于(或小于)其叶子结点的值。如果父节点大孩子小那就是 大项堆,反过来则是小项堆。
堆排序属于选择排序。
将待排序列构造成一个大项堆(小项堆),此时最大就是堆的根节点,将其与最后一个叶节点交换位置,此时末尾元素就是最大值。接着将剩余的n-1个元素继续构造堆,这样会得到n个元素的最小值,反复执行就可以得到一个有序数列。