1. 冒泡排序: 从头到尾每次比较相邻两个元素,不符合的就交换,一趟便利能冒泡出一个数据到尾部
    2. 插入排序: 从第一个元素开始当作已经有序部分,从后面的数据中遍历数据放到前面已有序的对应位置(需要做搬移)
    3. 选择排序: 从第一个元素当作最小元素,每次从后面的数据中选择一个最小的数据放到前面已排序最后一位的后面(也就是说与未排序部分的第一位交换位置)
    4. 归并与快排的分解思路

    image.png

    1. 堆排序(大顶堆):堆的节点个数n,从n/2+1到n的节点都是叶子节点(原理可证明),叶子节点不需要堆化

      重点:父节点和它的左右子节点比较大小关系,并交换。 对于某个节点:

    从上往下堆化,时间复杂度和高度成正比

    从下往上堆化,时间复杂度和深度成正比

    image.png