快速排序演算法sort分析

2021-06-28 00:10:52 字數 904 閱讀 8486

快速排序的思想是分治法的思想。

一般是按照這個序列的首元素為 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...