排序算法是《数据结构与算法》中最基本的算法之一。

十大经典排序算法对比
排序算法时间复杂度空间复杂度排序方式稳定性
平均最好最坏
冒泡排序$O(n^2)$$O(n)$$O(n^2)$$O(1)$内部排序:heavy_check_mark:
选择排序$O(n^2)$$O(n^2)$$O(n^2)$$O(1)$内部排序:x:
插入排序$O(n^2)$$O(n)$$O(n^2)$$O(1)$内部排序:heavy_check_mark:
希尔排序$O(n^{1.3})$$O(n)$$O(n^2)$$O(1)$内部排序:x:
归并排序$O(n\log_2n)$$O(n\log_2n)$$O(n\log_2n)$$O(n)$外部排序:heavy_check_mark:
快速排序$O(n\log_2n)$$O(n\log_2n)$$O(n^2)$$O(n\log_2n)$内部排序:x:
堆排序$O(n\log_2n)$$O(n\log_2n)$$O(n\log_2n)$$O(1)$内部排序:x:
计数排序$O(n+k)$$O(n+k)$$O(n+k)$$O(k)$外部排序:heavy_check_mark:
桶排序$O(n+k)$$O(n+k)$$O(n^2)$$O(n + k)$外部排序:heavy_check_mark:
基数排序$O(n×k)$$O(n×k)$$O(n×k)$$O(n + k)$外部排序:heavy_check_mark:

详细说明及代码实现如下:

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