排序演算法第二談 快速排序

2021-10-13 18:40:16 字數 1278 閱讀 6128

把乙個陣列切分成兩個子陣列的基本思想:

找乙個基準值,用兩個指標分別指向陣列的頭部和尾部;

先從尾部向頭部開始搜尋乙個比基準值小的元素,搜尋到即停止,並記錄指標的位置

再從頭部向尾部開始搜尋乙個比基準值大的元素,搜尋到即停止,並記錄指標的位置;

交換當前左邊指標位置和右邊指標位置的元素;

重複2,3,4步驟,直到左邊指標的值大於右邊指標的值停止。

public

static

void

quicksort

(int

arr,

int left,

int right)

int fun =

fun(arr, left, right)

;quicksort

(arr, left, fun -1)

;quicksort

(arr, fun +

1, right);}

/** * 對陣列,從索引lo到索引hi之間的元素進行分組並返回分組界限對應的索引

** @param arr

* @param left

* @param right

*/public

static

intfun

(int

arr,

int left,

int right)

while

(l <= r)

//交換

if(l >= r)

break

;else

exchage

(arr, l, r);}

//把左邊第乙個元素和r索引交換

exchage

(arr, left, r)

;return r;

}/**

* 交換元素

** @param arr

* @param i

* @param j

*/public

static

void

exchage

(int

arr,

int i,

int j)

速度

演算法第二章 快速排序

先把快速排序的 實現貼上來,太晚了,過程改天再加上!快速排序就是把乙個數拿出來,然後把小於這個數的扔到一邊,把大於它的扔到一邊,那這個數就在正確的位置上了 然後把這個數的左邊分成乙份,右邊分成乙份,再把這兩份進行剛才的做法,一直不停地這樣做,直到不能再分。接下來就要說明怎麼把小於它的數扔到一邊,大於...

第二週(快速排序)

通過找出乙個基準數,然後從左向右,從右向左依次找出比這個基準數大 小 的數字,然後交換它倆,最後將基準數與每輪判斷的結尾處交換,這樣每輪結束後,剛剛排序的部分都會被分成兩部分,在基準數左邊的數字都比基準數小,在基準數右邊的數字都比基準數大,然後不斷二分下去,最後整體排序完成 此方法主要運用了遞迴與二...

簡談快速排序演算法 Java

快速排序是常用排序中的一種,其時間複雜度在理想狀態下可以達到o logn 在一些需要高效處理排序的時候經常用到.原理是將陣列中第乙個作為基數,然後將剩下的數分成兩個區,左邊的是小於基數值的數,右邊的大於基數值的數.將基準值放中間.然後利用遞迴將分開的兩個區做同樣的操作,直到完成排序 快速排序 par...