稳定排序和非稳定排序

稳定排序、非稳定排序

稳定排序

稳定排序:

待排序的记录序列中可能存在两个或两个以上关键字相等的记录。排序前的序列中Ri领先于Rj(即i<j).若在排序后的序列中Ri仍然领先于Rj,则称所用的方法是稳定的。

参考 这儿
顾名思义,不能满足上述条件的,就是非稳定排序了。

排序分类

哪些是稳定排序,哪些是非稳定排序呢?
稳定:

插入排序
基数排序
归并排序
冒泡排序
计数排序

非稳定排序

快速排序,希尔排序,简单选择排序,堆排序1

稳定排序好处

说了这么多,当然是有好处的,不然谁会用呢?
举个简单的列子吧:

比如我们先根据数值进行排序,得到的稳定排序结果是:

a[0][z] a[1][y] a[2][x] a[2][y] a[2][x] a[3][z]

如果我们想对排序后的结果,再根据x, y , z 进行排序,我们希望是基于已有的重新再做一次排序。

a[2][x] a[2][x] a[1][y] a[2][y] a[0][z] a[3][z]

非稳定排序得到的结果有可能是:

a[2][x] a[2][x] a[1][y] a[2][y] a[0][z] a[3][z]

或者

a[2][x] a[2][x] a[2][y] a[1][y] a[0][z] a[3][z]

对比两次的结果来看,已经排序好的顺序都不会被改变,否则非稳定排序的第二种结果,就不是我们希望看到的了。


  1. 注脚的解释 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值