思想:找乙個記錄,以它的關鍵字作為「樞軸」,凡其關鍵字小於樞軸的記錄均移動至該記錄之前,反之,凡關鍵字大於樞軸的記錄均移動至該記錄之後。致使一趟排序之後,記錄的無序序列 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 當中樞元素在低指標時,從高指標開始向前查詢...