排序总结,

简介: 排序总结,
排序总结
时间复杂度 额外空间复杂度 稳定性
选择排序 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*logN) O(1)
计数排序 O(N) O(M)
基数排序 O(N) O(N)
  1. 不基于比较的排序,对样本数据有严格要求,不易改写
  2. 基于比较的排序,只要规定好两个样本怎么比大小就可以直接复用
  3. 基于比较的排序,时间复杂度的极限是O(N*logN)
  4. 时间复杂度O(N*logN)、额外空间复杂度低于O(N)、且稳定的基于比较的排序是不存在的
  5. 为了绝对的速度选快排,为了节省空间选堆排,为了稳定性选归并

常见的坑

  1. 归并排序的额外空间复杂度可以变成O(1),“归并排序 内部缓存法”,但是将变得不在稳定——直接用堆
  2. “原地归并排序”是垃圾贴,会让时间复杂度变成O(N^2)——插排
  3. 快速排序稳定性改进,“01 stable sort”,但是会对样本数据要求更多——桶排
  4. 在整型数组中,请把奇数放在数组左边,偶数放在数组右边,要求所有奇数之间原始的相对次序不变,所有偶数之间的相对次序不变。时间复杂度做到O(N),额外空间复杂度做到O(1)——快排不稳定
相关文章
|
6月前
|
存储
第1章 排序
第1章 排序
|
7月前
|
人工智能 搜索推荐 算法
几种排序的实现
几种排序的实现
33 2
|
存储 搜索推荐 算法
排序相关问题
排序相关问题
68 1
|
搜索推荐 算法
排序实现
排序实现
68 0
|
搜索推荐
排序进行曲-v1.0
排序进行曲-v1.0
|
算法
排序(详解)下
排序(详解)
72 0
|
搜索推荐
7-207 排序
7-207 排序
63 0
|
存储 缓存 算法
排序(一)
快速学习排序(一)