快排演算法
快排和冒泡都是基於交換的思想,但是進行了改進,更為高效。
流程:(1)首先設定乙個分界值,通過分界值將陣列分成左右兩部分。
(2)將大於或等於分界值的資料集中到陣列右邊,小於分界值的資料集中到陣列的左邊。
(3)左右兩個部分重複上述排序。
從上述流程可以看出,這就是乙個遞迴的過程,遞迴終止即只有乙個元素
1 #include2 #include3 #include4using
namespace
std;
5void quicksort(int *a,int left,int
right)625
}26while(a[lt]因為右半部分可能還到不了下邊界,所以需要繼續遞增
27while(a[rt]>base) rt--;//
因為左半部分可能還到不了上界,所以需要繼續遞減
28if(lt == rt) lt++; //
此處為了避免兩個邊界模糊不清
29if( left < rt ) quicksort(a,left,rt); //
遞迴對左半部分快排
30if( right > lt) quicksort(a,lt,right); //
遞迴對右半部分快排
3132}33
intmain()
3446 cout<47 quicksort(a,0,n-1
);48 cout<<"
array after sorting is:
"<49for (int i = 0; i < n; i++) cout<"";
50 cout<51return0;
52 }
C C 實現快速排序
file gm qsort.h brief 實現快速排序 author don hao date 2011 8 21 22 31 06 version email hao.limin gmail.com company modification write modifications here.if...
C C 實現快速排序
1.思想就是遞迴的分而治之,每次遞迴就做兩件事 分段,對這個段依照pivot進行粗略的排序 2.對於分好的段,求出其中位數為pivot,然後小於pivot的全都放到這個段的左邊,大於pivot的全都放到這個段的右邊,下面是實現 include include template t class qui...
C C 演算法 快速排序
氣泡排序的執行效率太低,因為每次比較相鄰的兩個數,所以時間複雜度為o n 花費的時間太長,所以為了更加的節省時間,提高程式的執行速率,我們可以採用快速排序。對於乙個數集,先把第乙個數當作基準數,然後分別從最右端和最左端向另一方向進行搜尋,以從小到大的順序為例 從右向左搜尋的,遇到比基準數小的與從左向...