序号 名称 时间复杂度 空间复杂度 稳定性 描述
    平均 最好 最坏
    1 冒泡排序 O(n) O(n) O(n O(1) 稳定 从前往后,将最大的移动的到数列最后并固定。
    2 选择排序 O(n) O(n) O(n) O(1) 不稳定 从前往后遍历,第一次将遍历到的最小值交换到第一位;第二次将遍历到的最小值交换到第二位…(每次遍历选一个最小值
    3 插入排序 O(n) O(n) O(n) O(1) 稳定 将数列分为前面的有序表和后面的无序表,将无序表中的数值取出,插入到有序表的相应位置。(拿后面的元素在前面选位置插)
    4 希尔排序 O(nlogn) O(nlog2n) O(n) O(1) 不稳定 先分组,组内插入排序,再分组,组内插入排序,最后进行插入排序,组内元素的间隔逐渐减小,直至1。
    5 归并排序 O(nlogn) O(nlogn) O(nlogn) O(n) 稳定 先分后治
    分开的本质就是用递归对left和right进行计算,使其变成每一个元素的左右索引。
    治就是将分开的元素(数组段)按顺序组合成新的数组。
    6 快速排序 O(nlogn) O(nlogn) O(n) O(logn) 不稳定 选择mid,不断的对mid左右进行交换,大的放右,小的放左。
    7 基数排序 O(n*k) O(n*k) O(n*k) O(n+k) 稳定 将所有待比较数值统一为同样的数位长度,数为较短的数前面补零。然后按照数组中数arr[i]的最低位,将该数arr[i]放到对应的桶中(0~9),再依次取出放到新的列表中;再按次低位数如法炮制…