[整理]什么是排序算法的穩定性,為什么它很重要?


據說排序算法是 穩定 如果具有相等鍵的兩個對象在排序輸出中出現的順序與它們在要排序的輸入數組中出現的順序相同。一些排序算法本質上是穩定的,如插入排序,合並排序,冒泡排序等。並且一些排序算法不是,如堆排序,快速排序等。

背景:“穩定”排序算法按順序保存具有相同排序鍵的項目。假設我們有一個5個字母的單詞列表:
peach
straw
apple
spork
如果我們只按每個單詞的第一個字母對列表進行排序,那么穩定排序會產生:
apple
peach
straw
spork
在一個 不穩定 排序算法, straw 要么 spork 可以互換,但在穩定的情況下,它們保持相同的相對位置(也就是說,因為 straw 出現在之前 spork 在輸入中,它也出現在之前 spork 在輸出中)。

我們可以使用這個算法對單詞列表進行排序:按列5進行穩定排序,然后是4,然后是3,然后是2,然后是1。 最后,它將被正確排序。說服自己。 (順便說一句,該算法稱為基數排序)

現在回答你的問題,假設我們有一個名字和姓氏的列表。我們被要求“按姓氏排序,然后先排序”。我們可以先按名字排序(穩定或不穩定),然后按姓氏進行穩定排序。在這些排序之后,列表主要按姓氏排序。但是,如果姓氏相同,則對名字進行排序。您不能以相同的方式堆疊不穩定的排序。

在實際商業案例中:
如果廣告展示,如果雙方廣告主都出價一樣,都是100, 但是對應的展示的廣告是應該不一樣的(針對客戶的要求展示特定的廣告),但是如果不穩定,則無法展示對應需要的看到的廣告,雖然他們消耗的價格是一樣的。

參考:
http://landcareweb.com/questions/1783/shi-yao-shi-pai-xu-suan-fa-de-wen-ding-xing-wei-shi-yao-ta-hen-zhong-yao


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM