白话简述:排序算法的稳定性 (什么样的排序是不稳定的)
拿{ 6,2,4,6,1}举例。
a[0] | a[1] | a[2] | a[3] | a[4] |
6 | 2 | 4 | 6 | 1 |
有两个6,a[0]和a[3]。排序结果就有两种可能:
1 | 2 | 4 | 6 | 6 |
原a[4] | 原a[1] | 原a[2] | 原a[0] | 原a[3] |
原a[4] | 原a[1] | 原a[2] | 原a[3] | 原a[0] |
如果排序结束后,a[0]可以保证一定在a[3]前头,也就是他们原有的顺序不变,那这种排序算法就是稳定的。(比如常见的冒泡排序、基数排序、插入排序、归并排序、桶排序、二叉树排序等都是稳定的排序算法)
反之,如果不能保证原有顺序,这种算法就是不稳定的。(比如常见的选择排序,希尔排序,堆排序,快速排序等都是不稳定的排序算法)
要证明一种排序算法不稳定,举出一组例子就OK了;但要证明算法稳定,就要对算法设计进行彻底分析了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步