排序演算法 快速排序

2022-06-21 20:36:09 字數 1024 閱讀 1813

快速排序(quicksort)是對氣泡排序的一種改進。

快速排序演算法原理如下:

首先設定乙個分界值,通過該分界值將陣列分成左右兩部分。 

將大於或等於分界值的資料集中到陣列右邊,小於分界值的資料集中到陣列的左邊。此時,左邊部分中各元素都小於或等於分界值,而右邊部分中各元素都大於或等於分界值。

然後,左邊和右邊的資料可以獨立排序。對於左側的陣列資料,又可以取乙個分界值,將該部分資料分成左右兩部分,同樣在左邊放置較小值,右邊放置較大值。右側的陣列資料也可以做類似處理。 

重複上述過程,可以看出,這是乙個遞迴定義。通過遞迴將左側部分排好序後,再遞迴排好右側部分的順序。當左、右兩個部分各資料排序完成後,整個陣列的排序也就完成了。

資料演示:

待排序序列: 10 7 15 2 5 27 13

第1輪:

中間值:

<10 放左邊陣列larr: 7 2 5

>=10 放右邊陣列rarr: 15 27 13

第1輪後: 7 2 5 15 27 13

針對左邊陣列larr 進行上述操作得到:2 5

針對右邊陣列rarr 進行上述操作得到:13 27

再次遞迴larr: 5

最後得到 2 5 7 10 13 15 27

**實現:

function quicksort($arr) 

$middle = $arr[0];

$larr = ;

$rarr = ;

for($i=1;$i<$len;$i++) else

} $left = quicksort($larr);

$right = quicksort($rarr);

return array_merge($left,array($middle),$right); //array_mrege()引數必須為陣列,array($middle)整型強制型別轉換為陣列 }

print_r(quicksort($arr));

排序演算法 快速排序演算法

網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!作為程式設計人員,需要邁過去 資料結構與演算法 這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。一 快速排序演算法思想 從一組資料中找出乙個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,...

演算法 排序演算法 快速排序

快速排序是對冒泡法排序的一種改進。快速排序演算法 的基本思想是 將所要進行排序的數分為左右兩個部分,其中一部分的所有資料都比另外一 部分的資料小,然後將所分得的兩部分資料進行同樣的劃分,重複執行以上的劃分操作,直 到所有要進行排序的資料變為有序為止。可能僅根據基本思想對快速排序的認識並不深,接下來以...

排序演算法 快速排序

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