为什么要区分稳定和不稳定排序


对于排序算法,相信你一定不陌生吧!如我们常见的几大经典排序:

冒泡排序插入排序选择排序快速排序归并排序堆排序等等。


这些排序算法中,性能、内存消耗各有优劣,同时也各有各的适用场景,而我们也不能仅仅从时间复杂度和空间复杂度的优劣去评断一个排序算法的好与坏,比如冒泡排序插入排序,两者的时间复杂度均是O(n²),空间复杂度也都是O(1),但是插入排序却更常用,而且在很多实际场景中,执行效率更高,至于原因,你可以思考一下,此文暂不做讨论。


而排序算法中,除了时间复杂度和空间复杂度,还有着一个我们比较常关注的性质:稳定性

我们这里简单描述一下什么是排序算法的稳定性:

对于某一种排序算法,如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序保持不变,那么就说这个排序算法是稳定的。

而上面所提到的几种排序算法中,冒泡排序、插入排序、归并排序属于稳定排序,选择排序、快速排序、堆排序属于不稳定排序。


简单举个例子:

假设对数组[3, 2, 2, 5, 1, 4]进行递增排序,数组中有两个元素是相等的即2,为方便标识,我们先用2

  • 21
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yeqiu1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值