回覆列表
  • 1 # 使用者2035774605866

    快速排序的基本思想就是從一個數組中任意挑選一個元素(通常來說會選擇最左邊的元素)作為中軸元素,將剩下的元素以中軸元素作為比較的標準,將小於等於中軸元素的放到中軸元素的左邊,將大於中軸元素的放到中軸元素的右邊。

    然後以當前中軸元素的位置為界,將左半部分子陣列和右半部分子陣列看成兩個新的陣列,重複上述操作,直到子陣列的元素個數小於等於1(因為一個元素的陣列必定是有序的)。

    以下的程式碼中會常常使用交換陣列中兩個元素值的Swap方法,其程式碼如下

    public static void Swap(int[] A, int i, int j){

    int tmp;

    tmp = A[i];

    A[i] = A[j];

    A[j] = tmp;

    擴充套件資料:

    快速排序演算法 的基本思想是:將所要進行排序的數分為左右兩個部分,其中一部分的所有資料都比另外一 部分的資料小,然後將所分得的兩部分資料進行同樣的劃分,重複執行以上的劃分操作,直 到所有要進行排序的資料變為有序為止。

    定義兩個變數low和high,將low、high分別設定為要進行排序的序列的起始元素和最後一個元素的下標。第一次,low和high的取值分別為0和n-1,接下來的每次取值由劃分得到的序列起始元素和最後一個元素的下標來決定。

    定義一個變數key,接下來以key的取值為基準將陣列A劃分為左右兩個部分,通 常,key值為要進行排序序列的第一個元素值。第一次的取值為A[0],以後毎次取值由要劃 分序列的起始元素決定。

    從high所指向的陣列元素開始向左掃描,掃描的同時將下標為high的陣列元素依次與劃分基準值key進行比較操作,直到high不大於low或找到第一個小於基準值key的陣列元素,然後將該值賦值給low所指向的陣列元素,同時將low右移一個位置。

    如果low依然小於high,那麼由low所指向的陣列元素開始向右掃描,掃描的同時將下標為low的陣列元素值依次與劃分的基準值key進行比較操作,直到low不小於high或找到第一個大於基準值key的陣列元素,然後將該值賦給high所指向的陣列元素,同時將high左移一個位置。

    重複步驟(3) (4),直到low的植不小於high為止,這時成功劃分後得到的左右兩部分分別為A[low……pos-1]和A[pos+1……high],其中,pos下標所對應的陣列元素的值就是進行劃分的基準值key,所以在劃分結束時還要將下標為pos的陣列元素賦值 為 key。

  • 中秋節和大豐收的關聯?
  • 有關黃鶴樓的神話故事?