排序算法中的穩定性理解

假定在待排序的記錄序列中, 存在多個具有相同關鍵字的記錄, 若經過排序, 這些記錄的相對次序保持不變
即:在原序列中, a=b, 且a在b之前, 而排序後, a仍在b之前, 則稱爲這種排序算法是穩定的, 否則稱爲不穩定的.
如1,44,22, 55,22,99.
原始數列中,有兩個22. 但粗號的22.是在22的後面。
那麼穩定性排序完成後就該爲:
1, 22, 22, 44, 55, 99
不穩定性排序完成後可能爲:
1, 22,22, 44, 55, 99
穩定性排序的意義或優點:
穩定性的好處。排序算法如果是穩定的,那麼從一個鍵上排序,然後再從另一個鍵上排序,第一個鍵排序的結果可以爲第二個鍵排序所用。基數排序就是這樣,先按低位排序,逐次按高位排序,低位相同的元素其順序再高位也相同時是不會改變的
通俗點說,穩定性排序的意義就是
1、如果只是簡單的進行數字的排序,那麼穩定性將毫無意義。
2、如果排序的內容僅僅是一個複雜對象的某一個數字屬性,那麼穩定性依舊將毫無意義(所謂的交換操作的開銷已經算在算法的開銷內了,如果嫌棄這種開銷,不如換算法好了?)
3、如果要排序的內容是一個複雜對象的多個數字屬性,但是其原本的初始順序毫無意義,那麼穩定性依舊將毫無意義。
4、除非要排序的內容是一個複雜對象的多個數字屬性,且其原本的初始順序存在意義,那麼我們需要在二次排序的基礎上保持原有排序的意義,才需要使用到穩定性的算法,例如要排序的內容是一組原本按照價格高低排序的對象,如今需要按照銷量高低排序,使用穩定性算法,可以使得想同銷量的對象依舊保持着價格高低的排序展現,只有銷量不同的纔會重新排序。(當然,如果需求不需要保持初始的排序意義,那麼使用穩定性算法依舊將毫無意義)。

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序算法
冒泡排序、插入排序、歸併排序和基數排序是穩定的排序算法

END.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章