[算法与数据结构]排序算法

排序算法的稳定性

稳定算法

  1. 归并排序:归并排序只在合并子数组时发生元素位置的交换,这个过程完全可以控制相等元素的相对位置;
  2. 插入排序:
  3. 冒泡排序:
  4. 桶排序:

不稳定排序

  1. 快速排序:将支点与最终落点交换时可能会造成相等元素的换位;
  2. 选择排序:排序的过程是共进行n次扫描,第i次扫描会从未排序的部分选出最小的元素,将该元素与第i个元素交换位置;不稳定的一个例子是:序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。
  3. 堆排序:比如:3 27 36 27,如果堆顶3先输出,则第三层的27(最后一个27)跑到堆顶,然后堆稳定,继续输出堆顶,是刚才那个27,这样说明后面的27先于第二个位置的27输出,因此不稳定;
  4. 希尔排序:是对插入排序的优化,因为插入排序在数组有序的情况下效率很好,具体见https://blog.csdn.net,不稳定的例子:见图片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值