白话简述:排序算法的稳定性 (什么样的排序是不稳定的)


拿{ 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了;但要证明算法稳定,就要对算法设计进行彻底分析了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM