排序算法总结

常用排序算法
常用排序算法
时间复杂度 空间复杂度 是否为稳定排序 是否为原地排序
直接插入排序 $O(n^2)$ $O(1)$ ✔ ✔
折半插入排序 $ O(n^2)$ (只优化了比较的过程) $O(1)$ ✔ ✔
希尔排序 和增量有关,最坏$O(n^2)$ $O(1)$ ❌ ✔
冒泡排序 $O(n^2)$ $O(1)$ ✔ ✔
快速排序 $O(nlog_2n)$ $O(log_2n)$ ❌ ✔
简单选择排序 $O(n^2)$ $O(1)$ ❌ ✔
堆排序 $O(nlog_2n)$ $O(1)$ ❌ ✔
归并排序 $O(nlog_2n)$ $O(n)$ ✔ ❌
==基数排序== $O(dn) d是位数$ $O(d)$ ✔ ❌
==桶排序== $O(n+k)$ k为桶个数,n为元素数量 $O(n+k)$ ✔ ❌

References

  • 严版数据结构
  • 数据结构与算法之美