2012-05-13 22 views
-1

我知道quicksort不是穩定的方法,即對於相等的元素,也許成員的數組將不會被放置在正確的位置,我需要數組的示例(其中元素重複幾次)quicksort不工作(需要例如三種分區方法)。我無法在互聯網上找到這樣的數組例子,你能幫助我嗎?其中quicksort粉碎的例子

確定我可以使用其他類型的排序方法來解決這個問題(比如堆排序,合併排序等),但我的態度是知道在現實世界的例子中,什麼樣的數據包含quicksort的風險,因爲知道它是一種最有用的方法,並且經常使用

+1

並不穩定,並不意味着它會產生不正確的輸出。如果正確實施,輸出將始終進行排序。沒有輸入會產生未排序的輸出。 – Mat

回答

2

無論指定什麼數組,Quicksort都不會崩潰。

當排序算法被稱爲「穩定」或「不穩定」時,它不涉及算法的安全性或它是否崩潰。它與維護具有相同鍵的元素的相對順序有關。

作爲一個簡單的例子,如果有:

[9,5,7,5,1]

然後,「穩定」的排序算法應保證排序後的數組的前5是在仍然放在第二個5之前。儘管對於這個微不足道的例子沒有什麼區別,但有一些例子會影響它,比如當根據一列對錶格進行排序時(您希望其他列保持相同的順序像之前一樣)。

更多,請參閱:http://en.wikipedia.org/wiki/Stable_sort#Stability

+0

我在問這個問題,如果數組包含1 3 3 3 3 4 2 5 3 6 7 8,結果將被排序?如果是,那麼記住什麼樣的穩定性? – programmer

+0

這個問題的解決方法是三種分區方式嗎? – programmer

+0

結果將始終排序。穩定性是關於數組排序後3s是否保持相同順序。有些算法不能保證這一點,其他算法可以。這就是穩定。看維基百科鏈接,這將是有道理的 – HXCaine