快速排序 C 實現

2021-10-02 18:47:29 字數 1192 閱讀 7860

#include

#include

using

namespace std;

/* #與歸併排序一樣,快速排序也使用了分治思想。

#快速排序分三步分治:

分解、解決、合併

*/void

quicksort

(int

*a,int left,

int right)

;int

partition

(int

*a,int left,

int right)

;void

swapvalue

(int

&a,int

&b);

intrandomized_partition

(int

*a,int left,

int right)

;int

main()

;/*int a[16] = ;*/

quicksort

(a,0,7

);for(

int j =

0;j <

8;j++

)return0;

}void

quicksort

(int

*a,int left,

int right)

}//vs中處理遞迴是按照**順序處理的,左邊先遞迴完再去處理右邊。

void

swapvalue

(int

&a,int

&b)//partition過程中我們將陣列最右邊的元素作為軸值

intpartition

(int

*a,int left,

int right)

}swapvalue

(a[i +1]

, a[right]);

return i +1;

}//隨機化版本的快速排序演算法:在陣列/子陣列中隨找乙個值作為軸值

//意義在於:快速排序的期望執行時間是θ(nlgn)

intrandomized_partition

(int

*a,int left,

int right)

時間代價分析:

最壞情況:θ(n²)

最好情況:θ(nlgn)

排序 快速排序,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...