快速排序(c 實現)

2021-09-25 10:02:24 字數 1070 閱讀 8564

快速排序是最常用的一種排序方式了,他是非平穩排序(非平穩指的是排序的時間複雜度不固定)

快速排序主要有挖坑法和指標交換法,這個原理的描述,參考這個**   解釋的很清楚。

主要把指標交換法用c++實現,如下:

主要部分是,設定基準點  partition  !!

#include #include using namespace std;

void printarr(int arr, int n)

void swap(int &a, int &b)

//指標交換法

//實現元素的移動,根據基準數,劃分左右區域

int partition(int arr, int left, int right)

//迴圈之外i=j,交換基準點,將基準點交換到遍歷的停止處,即i處

//這樣使當前基準值左邊都是比他小的數,右邊都是比他大的數

swap(arr[i], arr[left]);

return i;

}//通過遞迴的方式,實現分而治之的思想

void quicksort(int arr,int left,int right)

int j=partition(arr,left,right); //設定j為基準點

quicksort(arr, left, j - 1); //左邊遞迴排序

quicksort(arr, j + 1, right); //右邊遞迴排序

}//測試函式

void test()

; int len = sizeof(arr) / sizeof(arr[0]);

cout << "the original array is :" << endl;

printarr(arr, len);

quicksort(arr, 0, len - 1); //注意最後一位!!邊界一定要注意!!

cout << "the sorted array is :" << endl;

printarr(arr, len);

}int main()

排序 快速排序,C 實現

本文 的github位址 基本思想 快速排序 是對 氣泡排序 的改進。基本原理 基於分治法,在待排線性表中取乙個元素pivot作為樞軸值,通過一趟排序將待排線性表劃分為獨立的兩部分,第一部分的所有元素小於pivot,第二部分的所有元素大於等於pivot,pivot位於其最終位置。遞迴對兩個子表做快速...

快速排序 c 實現

快速排序思想 基於分治策略,對氣泡排序的一種改進。對於要排序的乙個序列,從中選一值進行排序,將其放入到正確的位置position。然後以position為界,對左右兩部分再做排序。直到劃分的長度為1。步驟 設有一待排序的序列 1.分別設定low hight指向序列的最左端 最右端 從序列中選乙個進行...

快速排序(C 實現)

include using namespace std void swap int a,int b int sort int begin,int end if beginwhile beginif begin return begin void quicksort int begin,int end...