C 排序演算法 4 快速排序

2021-07-26 20:03:11 字數 1212 閱讀 8243

快速排序是目前各個排序演算法中效率優秀的一種排序方法,其採用的任然是分治法的思想,並且快速排序在實際中也是最為常用的。

首先在陣列中取乙個值作為基準(可以隨便取)

4,3,1,7,3,9,5,6,2

將比基準小的都放到基準的左邊,比基準大的都放到基準的右邊,以此將陣列分為兩部分

3,1,3,2,4,7,9,5,6

分別對兩個區間重複以上步驟,直到各區間只有乙個數

3,1,3,2,|4|,7,9,5,6

1,2,3,3,|4|,5,6,7,9

過程非常簡單,主要的問題在於第二步的具體實現方式,這裡給出一種實現方式

void quicksort_(int a,int first,int last)//對first到last之間的資料進行一次分割槽

a[i]=x;//將基準移入最後的空位}}

首先我們用x來儲存基準值,此時也可以認為原基準值所在位置(也就是i所指的位置空出)

此時,i區(小於基準值的區域)出現了乙個空位需要乙個數來填上,我們就從j區(小於基準值的區域)開始尋找,如果遇到的數大於基準那麼就擴大j區的範圍,直至遇到小於基準的數,將其移入i區的空缺中。

之後對i區做相同的處理,一邊擴大區域一邊尋找合適的值。

重複以上兩步直至i,j兩區相遇,再將基準放入最後的空位,此時陣列就被分為兩組

void quicksort_(int a,int first,int last)

a[i]=x;

quicksort_(a,first,i-1);//分別對兩區域繼續分離

quicksort_(a,i+1,last);

}}void quicksort(int a,int n)

排序演算法4 快速排序

編寫乙份快速排序,完成對元素序列37,19,43,22,22,89,26,92按照從小到大順序排列。演算法思想 快速排序是氣泡排序演算法的改進,也屬於交換型別的排序演算法,它的基本思想描述如下 1 從第j個元素開始向前依次將每個元素與樞軸元素pivot比較。如果當前元素大於pivot,則比較前乙個元...

排序演算法 4 快速排序

快速排序法是對氣泡排序的一種改進,本來是要和氣泡排序寫在乙個文章裡的,不過前兩天剛開始在遞迴呼叫的時候沒有完全理解,昨天晚上google了一把發現原來自己理解錯了,我看的這個教材沒有寫清楚,今天早上除錯了一把終於成功。快速排序演算法的基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部...

排序演算法 4 快速排序

快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 nlogn 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 nlogn 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實現出來。快速排序...