速排基礎在要排的數(比如陣列a)中選擇乙個中心值key,通過一次排序將陣列a分成兩部分,其中以key值為中心,key值右邊都比key值大,key值左邊的都key值小,然後對這兩部分分別重複這個過程,直到整個有序,然後使用遞迴呼叫即可。:
排序過程如下:
我們以陣列,選擇第乙個元素30為基準值。
初始排序為[30,60,40,67,45,76,49,77]。
第一趟排序過程如下:[70
,60,40,67,45,76,49,77]
[70,60,40,67,45,76,
49,77]
[49,
60,40,67,45,76,
70,77]
[49,60,
40,67,45,76,
70,77]
[49,60,40,
67,45,76,
70,77]
[49,60,40,67,45,76,
70,77]
[49,60,40,67,45,70,
76,77]
第一趟排序後:
[49,60,40,67,45]
70[76,77]
第二趟排序過程:[49
,60,40,67,45]
70[76,77]
[45,
60,40,67,49]
70[76,77]
[45,
49,40,
67,60]
70[76,77]
[45,49,
40,67,60]
70[76,77]
[45,40,
49,67,60]
70[76,77]
第二趟排序後:
[45,40]
49[67,60]
70[76,77]
第三趟排序過程:
[45,40]49[
67,60]
70[76,77]
[40,45]
49[60,67]
70[76,77]
第三趟排序後:
[40,45,49,60,67,70,76,77]
最後結果為:
40,45,49,60,67,70,76,77
**表示如下:
public class z
i=z;
j=x;
index=a[i];// 用子表的第乙個記錄做基準值
while(i=index)
j--;
if(ia[i++]=a[j];// 用比基準小的記錄替換低位記錄
while(ii++;
if(ia[j--]=a[i];// 用比基準大的記錄替換高位記錄
} a[i]=index;// 將基準數值替換回 a[i]
sort(a, z, i-1);// 對低子表進行遞迴排序
sort(a, i+1, x);// 對高子表進行遞迴排序
}public static void zsort(int a)
public static void main(string args) ;
zsort(a);
system.out.println(arrays.tostring(a));
}}
快速排序原理
高快省的排序演算法 有沒有既不浪費空間又可以快一點的排序演算法呢?那就是 快速排序 啦!光聽這個名字是不是就覺得很高階呢。假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了,就是乙個用來參照的數,待會你就知道它...
快速排序原理
快速排序是氣泡排序的改進版,也是最好的一種內排序,在很多面試題中都會出現,也是作為程式設計師必須掌握的一種排序方法。思想 1.在待排序的元素任取乙個元素作為基準 通常選第乙個元素,但最的選擇方法是從待排序元素中隨機選取乙個作為基準 稱為基準元素 2.將待排序的元素進行分割槽,比基準元素大的元素放在它...
快速排序原理解剖
高快省的排序演算法 有沒有既不浪費空間又可以快一點的排序演算法呢?那就是 快速排序 啦!光聽這個名字是不是就覺得很高階呢。假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了,就是乙個用來參照的數,待會你就知道它...