思路:
選取陣列中任意乙個數字作為對比位pivot,然後定義兩個指標位left right,分別從陣列開始和結束位置向內掃瞄,每次先動乙個指標位,如right遇到小於pivot的值,將該值存放到左指標處,接著左指標向內位移,遇到大於pivot的值存放至右指標處,依次迴圈到left與right重合,則完成了第一輪快排,此時中間位的左側都是小,右側都是大,然後遞迴左半數組和右半陣列,最後完成所有排序。
**如下
遞迴函式
形參為陣列,陣列開頭 與結尾索引
void
quicksort
(int k,
int left,
int right)
}
qsort為排序函式,返回最後的中間位索引
int
qsort
(int k,
int left,
int right)
k[left]
= pivot;
//最後的中間位放pivot
return left;
}
int
main()
;quicksort
(k,0,9
);for(
int i =
0; i <
10; i++
)}
快速排序演算法思想
一 快速排序遞迴演算法 1 對下列採用快速排序 2 可以把最左邊 4 作為基數 然後分別從兩邊出發進行檢索 一定要從右邊開始 如果從左邊開始的話等下結果為 53241 因為我們要使左邊的數小於基數 從左邊開始 我們檢索是在大於基數那個位置停止 這時和基數交換 使左邊的數大於基數 導致結果出錯 首先要...
排序演算法思想記錄 歸併排序演算法 遞迴
歸併排序演算法思想為每乙個陣列中的數字可以看做是單位為1的有序陣列,將兩個有序陣列進行對比後合併,然後層層對比合併,最後為排序成功的陣列 首先需要將陣列分為兩塊 然後進入遞迴左半數組和右半陣列,繼續分割為兩塊,當陣列長度為1時返回。形參為 陣列 和陣列長度 void mergesort int k,...
排序演算法 快速排序演算法
網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!作為程式設計人員,需要邁過去 資料結構與演算法 這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。一 快速排序演算法思想 從一組資料中找出乙個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,...