Java | 排序内容大总结

不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!

文章目录

  • 前言
  • 算法整理
  • 两个结论
  • 总结


前言

本文内容是关于选择排序、冒泡排序、插入排序、归并排序、快速排序、堆排序的时间复杂度、空间复杂度和稳定性的总结。


算法整理

排序算法 时间复杂度 额外空间复杂度 稳定性
选择排序 O ( N 2 ) O(N^{2}) O(N2) O ( 1 ) O(1) O(1) × × ×
冒泡排序 O ( N 2 ) O(N^{2}) O(N2) O ( 1 ) O(1) O(1) √ √
插入排序 O ( N 2 ) O(N^{2}) O(N2) O ( 1 ) O(1) O(1) √ √
归并排序 O ( N ∗ l o g N ) O(N*logN) O(NlogN) O ( N ) O(N) O(N) √ √
快速排序 O ( N ∗ l o g N ) O(N*logN) O(NlogN) O ( l o g N ) O(logN) O(logN) × × ×
堆排序 O ( N ∗ l o g N ) O(N*logN) O(NlogN) O ( 1 ) O(1) O(1) × × ×

一般的排序选择:快速排序
因为快速排序经过实验它的常数项是最低的

有空间限制的话选择:堆排序

需要稳定性的话选择:归并排序

小样本量排序:使用时间复杂度为 O ( N 2 ) O(N^{2}) O(N2) 的算法,比如:插入排序

大样本量排序:使用时间复杂度为 O ( N ∗ l o g N ) O(N*logN) O(NlogN)的算法,比如:快速排序

两个结论

基于比较的排序,有没有时间复杂度比 O ( N ∗ l o g N ) O(N*logN) O(NlogN) 小的排序算法:目前没有

在时间复杂度为 O ( N ∗ l o g N ) O(N*logN) O(NlogN) 下,有没有空间复杂度比 O ( N ) O(N) O(N)小的且稳定的排序算法:目前没有


总结

文章本文内容是关于排序算法内容的大总结,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家!!!


你可能感兴趣的:(Java算法,Java小知识,java,算法,排序算法)