實際快速排序 分割策略

2021-07-27 11:11:41 字數 894 閱讀 4156

快速排序,樞紐元(比較值)理論上選哪個都可以。實際快速排序包括劃分策略 和遞迴呼叫。

public

static

super anytype>>

void

quicksort(anytype a)

private

static

final

int cutoff= 3;

public

static

void

swapreferences(anytype a, int index1, int index2)

private

static

super anytype>>

anytype median3(anytype a, int left, int right)

private

static

super anytype>> void

quicksort(anytype a, int left, int right)

while(a[--j].compareto(pivot) > 0) {}

if(i < j)

swapreferences(a, i, j);

else

break; //i 不可能等於j, 因為上面兩個while語句 互斥, i和j不可能指向同乙個位置。

}//restore pivot

swapreferences(a, i, right-1);

quicksort(a, left, i-1);

quicksort(a, i+1, right);

}else

insertionsort(a, left, right);

}

分治策略 快速排序

快速排序演算法是基於分治策略的另乙個排序演算法。其基本思想是 對輸入的子陣列a p r 按以下三個步驟進行排序。1 分解 divide 以a p 為基準元素將a p r 劃分成3段a p q 1 a q 和a q 1 r 使得a p q 1 中任何乙個元素小於等於a q 而a q 1 r 中任何乙個...

隨機選擇策略的快速排序

subject 計算機演算法設計與分析 title 2.8.2隨機選擇策略的快速排序 coder hao class 計科0906 num 0304090614 date oct 2nd,2011 programming language c include using namespace std ...

快速排序的樞紐元選取策略

快速排序中樞紐元的選擇會影響演算法的效率 快速排序中的樞紐元指的是乙個元素v,該元素將乙個數集s分成兩個互斥的集合s1和s2,s1中的任意元素均不大於v,s2中的任意元素均不小於v.錯誤的選擇策略 1 沒有經過充分考慮,選擇將陣列的第乙個元素作為樞紐元。如果輸入時隨機的,那麼這是可以接受的,但是如果...