白話簡述:排序算法的穩定性 (什么樣的排序是不穩定的)


拿{ 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