排序演算法之快速排序

2021-09-23 22:08:45 字數 1025 閱讀 4411

排序演算法之快速排序

排序過程:

1.首先找出標準數 standard,同常取陣列中第乙個數字為標準數

2.取兩個移動座標,乙個叫低位座標low 在最左邊,另乙個叫高位座標high在最右邊。

首先從高位上的數字開始:

迴圈(低位座標在高位座標左邊&&右邊的數字大於標準數字)

;quicksort

(array,

0,array.length-1)

; system.out.

println

(arrays.

tostring

(array));

}public

static

void

quicksort

(int

arr,

int start,

int end)

//當出現右邊的數字小於標準數,將右邊的數賦值給左邊

arr[low]

=arr[high]

;//當左邊的數字小於標準數,則低位座標向後遞推

while

(low

<=standard)

//當出現左邊的數字大於標準數,將左邊的數賦值給右邊

arr[high]

=arr[low];}

//最後低位座標與高位座標重合時,將標準數賦值給此時座標

arr[high]

=standard;

//遞迴呼叫,採取同樣的方法讓標準數之前的數字 以及標準數之前的數字,再次排序

quicksort

(arr,start,low)

;quicksort

(arr,low+

1,end);}

}}**結果:

1。沒採用遞迴時。(標準數時3,小於3的都在左邊,大於3的都在右邊)

2.採用遞迴處理 標準數前後的 數字

排序演算法之快速排序

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出...

排序演算法之快速排序

快速排序入口 public void quicksort int lists 遞迴呼叫該函式。原理 每次從陣列從選乙個標兵 本實現為簡單起見直接選取給定範圍內的第乙個元素為標兵 讓後在給定範圍內進行雙向遍歷,目的是以標兵為分界線,將所有小於標兵值的數字排一邊,將所有大於標兵的數字 放到另一邊。標兵移...

排序演算法之快速排序

快速排序是一種不穩定的排序演算法,它的基本思想是,以某個元素為基準,將所有大於等於它的值放在右邊,小於它的值放在左邊,這樣陣列就被分為兩部分,遞迴對這兩部分進行快速排序,而單個元素我們認為是已經排好序的。這是一種歸併思想,當然在最後一步,合併,我們什麼也沒有做也不用做。每一次排序都有乙個元素被放在正...