一、时间复杂度

时间复杂度 算法
O(n^2) 冒泡排序、选择排序、插入排序
O(n*logn) 归并排序、快速排序、堆排序、希尔排序
O(n) 基数排序、计数排序

二、空间复杂度

时间复杂度 算法
O(1) 冒泡排序、选择排序、插入排序、堆排序、希尔排序
O(logn)~O(n) 快速排序
O(n) 归并排序
O(m)(m是桶的数量) 基数排序、计数排序

三、稳定性

稳定性 算法
稳定 冒泡排序、插入排序、归并排序、基数排序、计数排序
不稳定 选择排序、快速排序、堆排序、希尔排序

  选择排序反例 [2,2,2,1]
  堆排序[2,2,2]
  快速排序[4,2,2,2,5]随机选中中间的2作为划分值
  希尔排序[5,1,1,5]步长为2

四、补充说明

  1.算法无绝对优劣。
  2.快速排序的快速指的是它的常量系数低。
  3.工程中的排序算法是综合排序,根据情况选择算法。

五、总结

算法 时间复杂度 空间复杂度 稳定性
冒泡排序 O(n^2) O(1) 稳定
选择排序 O(n^2) O(1) 不稳定
插入排序 O(n^2) O(1) 稳定
归并排序 O(n*logn) O(n) 稳定
快速排序 O(n*logn) O(logn)~O(n) 不稳定
堆排序 O(n*logn) O(1) 不稳定
希尔排序 O(n*logn) O(1) 不稳定
计数排序 O(n) O(m) 稳定
基数排序 O(n) O(m) 稳定