資料結構與演算法之隨機演算法與快速排序

2022-10-10 06:33:10 字數 1214 閱讀 2020

快速隨機排序的思路是從乙個陣列中隨機選擇乙個主元,然後將這個主元放到陣列的最後.迴圈陣列時,先定義乙個指標,發現了比主元小的元素,如果指標和迴圈下標相同

則只是把指標自增,如果發現迴圈下標不同則將迴圈下標與指標位置交換,這樣做的目的是始終保證指標左邊的元素小於主元,最後迴圈結束將主元與指標位置交換.這樣

就將陣列分成了left pivot right.然後再遞迴left,right.  

private

static

void quickinternal(int a, int l, int

r)

//查詢分割槽點

int q =partition(a, l, r);

quickinternal(a, l, q - 1);

quickinternal(a, q + 1, r);

}//排序

private

static

int partition(int a, int l, int

r)

intrandom;

if (l == 0)

else

if (random !=r)

int pivot =a[r];

int m =l;

for (int j = l; j < r; j++)

else}}

int temp =a[m];

a[m] =a[r];

a[r] =temp;

return

m; }

以下提供乙個測試方法.

資料結構與演算法之快速排序

1.快速排序的 實現如下 include using namespace std template void sort t data,size t head,size t tail templatesize t partition t data,size t head,size t tail tem...

資料結構與演算法之快速排序

快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 ...

資料結構與演算法之演算法

1.乙個問題的解可以分解為幾個子問題的解 2.這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣 3.存在遞迴終止條件 假如這裡有 n 個台階,每次你可以跨 1 個台階或者 2 個台階,請問走這 n 個台階有多少種 走法?如果有 7 個台階,你可以 2,2,2,1 這樣子上去,也可以 1...