排序算法可以分为内部排序和外部排序。

  • 内部排序:数据记录在内存中排序。
  • 外部排序:排序数据非常多,内存不能一次容纳全部数据,在排序过程中需要借助外部存储。

十大排序算法:

  1. 冒泡排序
  2. 插入排序
  3. 选择排序
  4. 快速排序
  5. 归并排序
  6. 希尔排序
  7. 计数排序
  8. 堆排序
  9. 桶排序
  10. 基数排序

算法复杂度

算法 时间复杂度 空间复杂度 稳定性
最好 最坏 平均
冒泡排序 十大排序算法 - 图1 十大排序算法 - 图2 十大排序算法 - 图3 十大排序算法 - 图4 稳定
插入排序 十大排序算法 - 图5 十大排序算法 - 图6 十大排序算法 - 图7 十大排序算法 - 图8 稳定
选择排序 十大排序算法 - 图9 十大排序算法 - 图10 十大排序算法 - 图11 十大排序算法 - 图12 不稳定
快速排序 十大排序算法 - 图13 十大排序算法 - 图14 十大排序算法 - 图15 十大排序算法 - 图16 不稳定
归并排序 O( n log n) O( n log n) O( n log n) O( n ) 稳定
希尔排序 O( n log2 n) O( n log2 n) O( n log n) O(1) 不稳定
计数排序 O( n + k) O( n + k) O( n + k) O(k) 稳定
堆排序 O( n log n) O( n log n) O( n log n) O(1) 不稳定
桶排序 O( n + k) O( n2 ) O( n + k) O( n + k) 稳定
基数排序 O( n x k) O( n x k) O( n x k) O( n + k) 稳定

什么是稳定性?

2 个相等的元素在排序前和排序后,元素顺序不变。(原来在它前面,现在还在它前面)

不稳定的排序算法

  • 选择排序
  • 快速排序
  • 希尔排序
  • 堆排序

参考链接