快速排序的思想是分治法的思想。
一般是按照這個序列的首元素為 mid 基準,把比比mid大的元素放在後面。比 mid 小的元素放前面。然後依次遞迴,把在 mid 前面的所有元素當成乙個新的序列進行剛才的操作,在mid後面的元素看成乙個新的序列也進行這樣的操作,直到這樣得到的序列為乙個元素。則排序完成。
當然為基準的元素不一定非要是1:首元素,也可以選2:末尾元素,或者3中間位置元素,4取首、末、中的中間值,4、取乙個隨機數。當然這個基準選取的好的話演算法的效率會不同,最好是每次取乙個所有元素排序之後的中間元素,這樣演算法的效率最高。
加入我們以序列 49,38,65,97,76,13,27 為例,取首元素為基準。
經過第一次劃分得到【27,38,13】 49 【76 97 65】
然後前面序列為27為基準27 後面元素以76為基準 得到 76
這樣元素就有序了。
可見,演算法其實很簡單,分治法策略這些可以用乙個遞迴函式來實現,
void qsort(int low,int high)
{ int mid;
if(low
int partition(int low,int high)
{ int i = low,j = high,pivot = num[low];
while(i=pivot)
j--;
if(i
這樣就實現了快速排序
#include #include using namespace std;
int num[500];
int partition(int low,int high)
{ int i = low,j = high,pivot = num[low];
while(i=pivot)
j--;
if(i
快速排序演算法sort分析
思想 快速排序的思想是分治法的思想 思路 先從右往 左找乙個小於基數的數,再從左往 右找乙個大於基數的數,然後交換他們。1 按照這個序列的首元素為 mid 基準,把比比mid大的元素放在後面,比 mid 小的元素放前面,後依次遞迴。2 把在 mid 前面的所有元素當成乙個新的序列進行剛才的操作,在m...
sort快速排序
include include 用sort必須加入的標頭檔案 using namespace std struct text bool cmp1 int a,int b bool cmp2 char a,char b bool c text a,text b bool cmp4 text a,tex...
sort快速排序
使用sort必須要有相應的標頭檔案 include。sort begin,end 直接用的話是按照公升序排列,end指向最後乙個元素的下乙個位置 int a n sort a,a n sort a,a n,cmp cmp為乙個函式控制sort是公升序還是降序排列 bool cmp int a,int...