我需要幫助瞭解快速排序算法的工作原理。我一直在觀看教學視頻,但仍然無法完全掌握它。快速排序算法狀態使用中間元素作爲支點
我有一個未排序的列表:1,2,9,5,6,4,7,8,3 而我必須快速排序它使用6作爲支點。 我需要在每個分區過程之後查看列表的狀態。
我的主要問題是理解元素的順序是什麼在樞軸之前和之後。所以在這種情況下,如果我們做了6個關鍵點,我知道數字1 - 5將在6和7 - 9之後。但是根據上面的列表,第一個分區中的數字1-5和7-9的順序是什麼?
這裏是我想使用的分區算法(熊我我使用中間元素作爲我最初的支點):
- 確定支點,並與第一個元素交換樞紐列表。
假設索引smallIndex指向最後一個小於主元的元素。索引smallIndex
被初始化爲列表的第一個元素。
對於列表中剩餘的元素(開始於第二元件) 如果當前元素比樞軸
較小。增量
smallIndex
b。用由smallIndex
指向的數組元素交換當前元素。使用
smallIndex
指向的數組元素交換第一個元素,即主元。
如果任何人都可以在算法列表中發生的每一個小改動之後顯示列表,那將是了不起的。
所以我可以安全地說,以6爲第一個分區作爲支點後,列表將是:1,2,5。4,3,6,9,7,8? – 2015-03-03 14:07:36
這可能取決於你的具體實現,但通常我編寫代碼的方式,第一個交換將是9和3,這將把9放在最右邊的位置。 – 2015-03-03 14:16:35
啊,所以它幾乎就像從右到左讀取值,如果它們應該移動到獲取位置的樞軸的另一側?如果是這種情況,我現在完全瞭解它......按照您通常對其進行編碼的方式,每個分區的外觀如何,直到列表完全排序爲止? – 2015-03-03 14:20:52