简单选择排序
- 通过n(n-1)/2次比较,每次找出最小值与第 i 个记录交换。
堆
- 把堆看作一个完全二叉树
- 父节点比子节点大叫大顶堆
- 父节点比子节点小叫小顶堆
堆排序
- 原始数列对应的完全二叉数
- 将序列调整为堆(建立初始堆)
- 从最后一个非终端节点开始,即第n/2(向下取整)个元素开始
- 调整时把父节点与左右子节点进行比较。
- 若第一次交换后父节点变为子节点,还是没有变为堆–父节点大于(小于)子节点,则子节点与子节点的子节点再次比较交换。
- 插入节点:把节点插入到序列的最右边(最后一个结点+1的位置),在进行调整(筛选)
- 输出节点:将根节点与最后一个二叉树节点进行交换,再对堆进行调整,完全二叉树长度减 1 。