时间复杂度 | 空间复杂度 | 稳定性 | |
选择 | 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(N) | 有 |
- 所有时间复杂度为O(N)的排序算法都需要考虑到数据情况
- 不包括时间复杂度O(N)的算法情况下,通常情况下应尽量采用快速排序算法,因为实验证明虽然参数相同,但是快排是速度最快的。
- 很多项目中,根据数据情况的不同,需要结合两种或多种排序算法的优点,来设计一个复合型的排序算法,以做到更加高效。
归并排序:
C语言实现归并排序_KamikazePilot的博客-CSDN博客https://blog.csdn.net/KamikazePilot/article/details/124012946
快排:
堆排序:C语言实现堆排序_KamikazePilot的博客-CSDN博客https://blog.csdn.net/KamikazePilot/article/details/123997473
桶排序(基数排序):
C语言实现桶排序_KamikazePilot的博客-CSDN博客https://blog.csdn.net/KamikazePilot/article/details/123999130