基本的快速排序和高階的快速排序 (使用遞迴)

2021-08-25 21:12:16 字數 738 閱讀 9934

void qsort(int * a,int begin,int end)

} tmp = a[begin]; //注意此時a[begin] 與 a[j] 交換

a[begin] = a[j];

a[j] = tmp;

qsort(a,begin,j - 1);

qsort(a,j + 1,end);

}}

上是最簡單的快速排序版本

/*

插入排序

*/void insertsort(int * a,int begin,int end)

a[i + 1] = tmp; }}

/* 這個演算法來自sgi stl

*/int middle(int a,int b,int c)

else }/*

首先,分劃元素k 取得是a[begin],a[middel],a[end]的中值

其次,如果分得的子陣列長度小於等於3,則呼叫insertsort

*/void advancedqsort(int * a,int begin,int end)

} tmp = a[begin]; //注意此時a[begin] 與 a[j] 交換

a[begin] = a[j];

a[j] = tmp;

advancedqsort(a,begin,j - 1);

advancedqsort(a,j + 1,end);

} }

基本排序 快速排序

快速排序的基本思想 主題 快速排序 開發語言 c 開發環境 microsoft visual studio include int paritition int a,int i,int j void quicksort int a,int p,int r int main void quicksor...

高階排序之快速排序

在寫快速排序前我們們可以寫一下劃分,劃分的目的是陣列基本有序,怎麼使陣列基本有序?這需要我們提前選乙個值作為樞紐,作為劃分陣列的關鍵值,使大的元素和較小的元素分布在這個樞紐的兩邊,這就需要我們事先對陣列裡元素有乙個大致上的了解。劃分演算法 public int parititon int low,i...

快速排序和隨機快速排序

嚴書上的快排是以最左邊元素為樞紐的,如下 include include using namespace std intpartition int a,int left,int right a left p return left void quicksort int a,int left,int ...