不爱生姜不吃醋⭐️
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!
本文内容是关于选择排序、冒泡排序、插入排序、归并排序、快速排序、堆排序的时间复杂度、空间复杂度和稳定性的总结。
排序算法 | 时间复杂度 | 额外空间复杂度 | 稳定性 |
---|---|---|---|
选择排序 | 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(N∗logN) | O ( N ) O(N) O(N) | √ √ √ |
快速排序 | O ( N ∗ l o g N ) O(N*logN) O(N∗logN) | O ( l o g N ) O(logN) O(logN) | × × × |
堆排序 | O ( N ∗ l o g N ) O(N*logN) O(N∗logN) | O ( 1 ) O(1) O(1) | × × × |
一般的排序选择:快速排序
因为快速排序经过实验它的常数项是最低的
有空间限制的话选择:堆排序
需要稳定性的话选择:归并排序
小样本量排序:使用时间复杂度为 O ( N 2 ) O(N^{2}) O(N2) 的算法,比如:插入排序
大样本量排序:使用时间复杂度为 O ( N ∗ l o g N ) O(N*logN) O(N∗logN)的算法,比如:快速排序
基于比较的排序,有没有时间复杂度比 O ( N ∗ l o g N ) O(N*logN) O(N∗logN) 小的排序算法:目前没有
在时间复杂度为 O ( N ∗ l o g N ) O(N*logN) O(N∗logN) 下,有没有空间复杂度比 O ( N ) O(N) O(N)小的且稳定的排序算法:目前没有
文章本文内容是关于排序算法内容的大总结,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家!!!