关于数据结构排序稳定性与不稳定性的分析

稳定排序

稳定排序包括插入排序、冒泡排序、归并排序、基数排序

稳定性分析

插入排序:在一个有序的序列中插入一个数,使插入后的序列保持有序。因为插入的过程中都是从后向前进行查找,遇到小于等于(或大于等于)的数停止寻找,进行插入操作。不改变排序前后相等数值的相对顺序,故使稳定的排序算法。

冒泡排序:冒泡故名思义,数值小的向上走,数值大的向下走,向上走的数遇到的小于等于当前数的值停止,向下走的数遇到大于等于当前数的数停止,类似于对于向上走的数有个排序之前在其前面数值相等限制了其向上走的脚步,原先在我之下,排序后也在我之下,向下走也是同理。故也是稳定的排序算法。

归并排序:将一段序列分为若干个小序列进行排序,排序后的小序列进行合并得到最后的排序结果。主要运用了分治的思想。分成的前后若干个小序列在最后进行合并时本身就包含了前后位置信息,在合并时不改变相同值在排序前后的相对顺序,故归并排序也是稳定排序。

基数排序:按从低到高的相应位的值进行排序,也是稳定排序算法。

不稳定排序算法

非稳定排序算法包括:选择排序、快速排序、希尔排序、堆排序

对于这种非稳定排序,我习惯是记住一个例子就好

选择排序:

[1,2,4,2,5,3 ]

主要思想是分别找出当前遍历元素中的最小值与相应位置的数进行交换,第一遍寻找元素的从第一个元素起的最小值(或最大值)和第一个元素进行交换,第二趟寻找从第二个元素起最小的(或最大的)元素与第二个元素进行交换,以此类推。

[3,3’,2] 排序后 [2,3’,3]

快速排序:

[5,3,3,4,3’,8,7] 排序后[3’,3,3,4,5,8,7]

希尔排序:

一次插入排序是稳定的,多次插入排序不是稳定的。

堆排序:

不是稳定排序算法,下次补充。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值