算法学习04:排序算法的稳定性及其汇总

本文探讨了排序算法的稳定性及其对效率的影响。稳定性在排序中指相同值的元素相对顺序不受排序影响,如冒泡排序和插入排序。O(N^2)级别的稳定排序包括冒泡和插入排序,而O(N*logN)级别的稳定排序有归并排序。快排、堆排序和计数排序等则不具备稳定性。在实际应用中,小规模数据可用插入排序,大规模数据推荐快速排序,系统排序通常针对基础类型使用快排,保持稳定性的归并排序用于非基础类型。排序算法的选择需综合考虑时间复杂度、空间复杂度和稳定性需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

稳定性

相同值的个体之间,如果不因为排序改变相对次序,那么该排序具有稳定性

复合数据,某个数据先按其中一个值排序,再使用稳定性的排序算法对第二个值排序,
就可以得到按照第二个值排序,同时内部第二个值相同时,按第一个值排序的序列

排序算法稳定性分析

O(N^2)
选择排序:选择序列中的一个最小值,与序列首交换,即破坏了稳定性
冒泡排序:确保两数相等时,不交换位置,即可保证稳定性
插入排序:插入的数在向左移动的过程中,遇到相等的数就停下来,也可以保证稳定性
O(N*logN)
归并排序:当左右序列的当前数相等的时候,先拷贝左边的,具有稳定性(小和问题时,先拷贝右边的,排序正确,但是失去稳定性)
快排排序:存在交换操作,没有稳定性
堆排序:形成大根堆的过程就失去稳定性

计数排序和基数排序都具有稳定性:不基于比较

排序总结

在这里插入图片描述
经过实验测试快排的常数最小,空间有限制用堆排,归并具有稳定性。

问题1 基于比较的排序能不能做到时间复杂度在O(NlogN)以下? 不行
问题2 时间复杂度O(N
logN)能不能空间复杂度O(N)且具有稳定性 不行

工程上对于排序的改进,样本量小的时候使用插入排序,样本量大的时候快排
系统自带的排序,基础类型使用快排,非基础的使用归并排序保持稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值