常見排序演算法之快速排序

2021-07-23 13:27:41 字數 1454 閱讀 4215

思想:找乙個記錄,以它的關鍵字作為「樞軸」,凡其關鍵字小於樞軸的記錄均移動至該記錄之前,反之,凡關鍵字大於樞軸的記錄均移動至該記錄之後。致使一趟排序之後,記錄的無序序列 r[s..t]將分割成兩部分:r[s..i-1]和r[i+1..t],

且 r[j].key≤ r[i].key ≤ r[j].key (s≤j≤i-1) 樞軸(i+1≤j≤t)。

例如:關鍵字序列

52, 49, 80, 36, 14, 58, 61, 97, 23, 75

調整為: 23, 49, 14, 36, (52) 58, 61, 97, 80, 75

其中(52)為樞軸,在調整過程中,需設立兩個指標:low 和 high,它們的初值分別為:s 和 t, 之後逐漸減小 high,增加 low,並保r[high].key≥52,r[low].key≤52,否則進行記錄的「交換」。 在對無序序列中記錄進行了一次分割之後,分別對分割所得的兩個子串行進行快速排序,依次類推,直至每個子串行中只含乙個記錄為止。

動畫演示可以檢視:

public

class quick

9 _quick_sort(arrays, 0, lenght - 1);

10 }

1112

public

void _quick_sort(int arrays, int start, int end)

1617

int i = start;

18int j = end;

19int

value = arrays[i];

20 boolean flag = true;

21while (i != j) else

30 }elseelse

37 }

38 }

39 snp(arrays);

40 _quick_sort(arrays, start, j-1);

41 _quick_sort(arrays, i+1, end);

4243 }

4445

public

void

snp(int arrays)

49 system.out.println();

50 }

5152

private

void

swap(int arrays, int i, int j)

5859

public

static

void

main(string args) ;

62 q.quick_sort(a,6);

63 }

6465 }

常見排序演算法之快速排序

快速排序是一種分割槽交換排序,是目前已知實測最快的一種排序演算法.6.快速排序 演算法思想 快速排序的基本思想是,通過一趟劃分將陣列或線性表劃為左部,右部,和基準值.其中左部都比基準值小,右部都比基準值大.1 在陣列中選擇乙個樞紐元key,一般情況下選取第乙個資料 2 將所有比key值小的資料移到k...

常見演算法溫習之快速排序

部落格內容中的排序以公升序排列為例 1.演算法理解 快排的基本思想是 1.1 選取pivot 通常不加考慮地可以直接選取序列的第乙個元素作為pivot,但是極端情況下,當原始序列恰好以降序排列時,快排時間複雜度將達到o n 2 比較好的方法是 三數中值分割法 即選取序列的第0個 最後乙個和最中間乙個...

常見演算法之18 快速排序

快速排序基本思想 選定乙個中樞元素,以其為基準點,將小於它的數放在其前面,大於其的數放在後面,把中樞元素放在最終合適的位置。然後再對左右兩邊分別遞迴。快速排序的基本步驟 1 初始時,以第乙個元素作為中樞元素。低指標指向第乙個元素,高指標指向最後乙個元素。2 當中樞元素在低指標時,從高指標開始向前查詢...