快速排序是經典的分治法排序演算法,平均時間複雜度為 O(n log n),在實際應用中效能優異。以下提供一個簡潔的 PHP 遞迴實現,適合學習與參考。
<?php
function quicksort($seq) {
if (count($seq) > 1) {
$k = $seq[0]; // 選取基準值
$x = array(); // 小於等於基準值的元素
$y = array(); // 大於基準值的元素
for ($i = 1; $i < count($seq); $i++) {
if ($seq[$i] <= $k) {
$x[] = $seq[$i];
} else {
$y[] = $seq[$i];
}
}
// 遞迴排序左右子陣列並合併
$x = quicksort($x);
$y = quicksort($y);
return array_merge($x, array($k), $y);
} else {
return $seq; // 基礎情況:單元素或空陣列直接返回
}
}
// 測試範例
$arr = array(12, 2, 16, 30, 8, 28, 4, 10, 20, 6, 18);
print_r(quicksort($arr));
?>
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
[5] => 12
[6] => 16
[7] => 18
[8] => 20
[9] => 28
[10] => 30
)
實際專案中建議:
sort()/usort(),底層採用混合排序演算效能更優