2013-02-28 136 views

回答

45

如果排序算法被認爲是「不穩定的」,這意味着對於排名相同的任何項目,綁定成員的順序不能保證與連續排序的那個集合保持一致。對於「穩定」排序,綁定條目在排序時總是以相同順序結束。

對於應用程序的示例,快速排序算法不穩定。這對於按優先級排序操作(如果兩個操作優先級相同,您不可能首先關注綁定的哪個元素),可以很好地工作。

另一方面,一個穩定的排序算法對於在線遊戲的排行榜等東西是很好的。如果您要使用不穩定的排序方式(例如按點排序),則在網頁上查看排序結果的用戶在頁面刷新時可能會遇到不同的結果,並且像遍歷結果等操作將無法正常運行。

+4

編輯,以包括爲什麼差異很重要的一些例子。 – 2013-02-28 01:03:16

+3

不可用的排序通常會產生可預測的結果,即在給定相同數據的情況下它們不會給出不同的答案。因此,當其他值發生更改時,頁面刷新只會顯示不同順序的等值。組織數據時,不穩定的原因是使用樹或類似的數據結構。 – 2013-02-28 01:16:32

+3

值得注意的是,穩定排序的更常見用法是用多個鍵排序。例如,如果您有一組代表人物的對象,並且您希望按年齡排序,並且名稱(按字母順序排列),那麼您可以先按名稱排序,然後按年齡排序,然後按穩定排序它在你正在尋找的狀態。 – 2013-02-28 02:35:44

6

穩定的排序保留了相同項目的順序。通過將行索引附加到鍵上,可以使任何排序變得穩定。不穩定的排序,比如堆排序和快速排序,本質上沒有這個屬性,但是它們被使用,因爲它們比穩定排序更快,更容易編碼。據我所知,沒有其他理由使用不穩定的排序。

+0

去上面那個Azron所做的(低於你的觀點)和他已經採用的例子,這是否意味着我們在窗口中做的網格排序是在一個穩定的排序實施?網格排序意味着按日期和類型對文件夾中的文件進行排序。 – 2014-01-14 13:29:31

+1

類似於文件管理器和excel穩定的排序,它們要麼使用穩定的排序,要麼使用穩定排序的穩定版本。 – 2014-01-14 23:46:44