我正在努力研究本週二即將到來的測試的各種排序和搜索算法。一切都很順利,直到我找到了快速排序算法。我沒有書或任何其他資源,所以我上網並開始閱讀SparkNote。我以爲我理解了文本,甚至閱讀了我在網上找到的PowerPoint的快速排序算法部分。快速排序算法:我不斷得到一個不同的答案
但是,SparkNote在算法的分步過程的頁面上提供了一個示例,但它沒有顯示初始排列列表的步驟。給出的列表是[5 9 3 8 6 4 2 1 7 0]
。根據SparkNotes,排列的列表中的值小於左側的數據點(其值爲5),而數值大於右側的數據點的值爲[0 3 4 2 1 5 8 6 7 9]
。但是,當我嘗試自己完成這些步驟時,我總是收到[ 4 0 3 1 2 5 6 8 7 9 ]
。
我把程序是:
5 9 3 8 6 4 2 1 7 0 // The initial list. Pivot = 5
5 0 3 8 6 4 2 1 7 9 // Switched 0 and 9.
5 0 3 1 6 4 2 1 7 9 // Switched 8 and 1
5 0 3 1 2 4 6 8 7 9 // Switched 6 and 2
4 0 3 1 2 5 6 8 7 9 // Switched 4 and 5 because the lines that point to the
// greater and smaller numbers crossed.
哪裏是我的錯?另外,我看到小於5的數字在左邊,大於5的數字在右邊,所以,我的錯誤是否真的影響了排序?
有很多不同的方法來分區快速排序數組。只需Google「quicksort分區」即可找到多個示例。 – Blastfurnace 2012-08-11 20:27:50