本文主要是介绍八大排序一些总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于比较的排序 时间复杂度 空间复杂度 稳定性 选择排序 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) 有不基于比较的排序,对样本数据有严格要求,不易改写 基于比较的排序,只要规定好两个样本怎么比大小就可以直接复用 基于比较的排序,时间复杂度极限为O(N*logN) 时间复杂度O(N*logN),空间复杂度低于O(N),且稳定的基于比较的排序是不存在的一般情况下: 为了绝对的速度选择快排,为了省空间选则堆排,为了稳定性选择归并归并排序的额外的空间复杂度可以为O(1),可以用归并排序 内部缓存法,但是会变得不再稳定, 所以考虑直接用堆排序 原地归并排序不太行,虽然额外空间复杂度为O(1) , 但是会让时间复杂度变为O(N*2), 所以考虑直接用插入排序 快速排序稳定性改进,"O1 stable sort" , 但是会对样本数据要求更多
这篇关于八大排序一些总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!