排序算法中的稳定性 -- 排序中比较容易忽略的东西

稳定性是什么

如果一个排序算法能够保留数组中重复元素的相对位置则可以被称为稳定的
《算法》第四版

在进行排序的时候,难免会出现相同元素的值。比如:[7, 4, 4, 3, 8, 9]对该数组进行排序,使用不同的排序算法都会变得有序,但有些算法不能保证数列中两个四的相对位置,我将[7, 4, 4, 3, 8, 9]数列中第一个4,命名为A,第二个四命名为B, 数组 [7, A, B, 3, 8, 9]。经过排序算法后,如果A,B的相对位置(即排序后A还在B的前面)没有发生改变,则称该排序算法是稳定的,否则是不稳定的。

稳定性有什么用

来看看那处理这段数据,目前给出的是按照时间大小排序

地名时间
A9:00
B10:00
C11:00
B12: 00

假如我们现在采用不稳定的算法,按照地名进行排序。

地名时间
A9:00
B12: 00
B10:00
C11:00

发现观察地名B的时间排序又乱了,如果采用的是稳定算法

地名时间
A9:00
B10:00
B12: 00
C11:00

那就解决这个问题了。

当我们需要稳定性时,我们才关注稳定性,如果不使用,稳定性对于我们而言是可忽略。

有什么排序是不稳定,又有什么排序是稳定的

稳定性算法
稳定的插入,归并
不稳定的希尔,快速排序,堆排序,选择排序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值