快速排序原理與優化

2021-09-01 05:56:54 字數 2084 閱讀 6498

設要排序的陣列是a[0]……a[n-1],首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。
1)設定兩個變數i、j,排序開始的時候:i=0,j=n-1;

2)以第乙個陣列元素作為關鍵資料,賦值給key,即key=a[0];

3)從j開始向前搜尋,即由後開始向前搜尋(j--),找到第乙個小於key的值a[j],將a[j]和a[i]互換;

4)從i開始向後搜尋,即由前開始向後搜尋(i++),找到第乙個大於key的a[i],將a[i]和a[j]互換;

5)重複第3、4步,直到i=j; (3,4步中,沒找到符合條件的值,即3中a[j]不小於key,4中a[i]不大於key的時候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,進行交換的時候i, j指標位置不變。另外,i==j這一過程一定正好是i+1或j-1完成的時候,此時令迴圈結束)。

舉個栗子 — 以第乙個元素6為基準的一趟快速排序

快速排序 優化

快速排序是對氣泡排序的一種改進。其基本思想基於分治法 在待排序表中選擇乙個元素當作標準記為mark,通過一次排序將排序表分成兩個部分,前一部分是小於mark的所有元素,後一部分是大於等於mark,mark放在了最終的位置上,這一過程叫做一趟快速排序。然後分別遞迴的對兩個子表進行上述重複過程,直到每個...

快速排序優化

優化點 優化選取中軸元素 以上 target 選取的位置是認定了陣列元素的首位,但是若這個數值的大小不在整個陣列的中間位置,會大大降低快排的效能。target array low 這句就成了乙個潛在的效能瓶頸。因此快速排序的速度還取決於這個target關鍵元素在陣列中的位置。改進方法 三數取中法 去...

快速排序原理

高快省的排序演算法 有沒有既不浪費空間又可以快一點的排序演算法呢?那就是 快速排序 啦!光聽這個名字是不是就覺得很高階呢。假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了,就是乙個用來參照的數,待會你就知道它...