十大排序算法

术语铺垫

  1. 稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。

  2. 非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。

  3. 原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。

  4. 非原地排序:需要利用额外的数组来辅助排序。

  5. 时间复杂度:一个算法执行所消耗的时间。

  6. 空间复杂度:运行完一个算法所需的内存大小。

排序算法

算法分类

算法比较

  • 选择排序
  • 插入排序
  • 冒泡排序
    • 非优化版本
    • 优化版本
  • 希尔排序
  • 归并排序
    • 递归式归并排序
    • 非递归式归并排序
  • 快速排序
  • 堆排序
  • 计数排序
    • 非优化版本
    • 优化版本
  • 桶排序
  • 基数排序

参考