以下是 PHP 快速排序的示例代碼:
function quickSort(&$arr, $left, $right) {
if ($left < $right) {
$pivotIndex = partition($arr, $left, $right);
quickSort($arr, $left, $pivotIndex - 1);
quickSort($arr, $pivotIndex + 1, $right);
}
}
function partition(&$arr, $left, $right) {
$pivot = $arr[$right];
$i = $left - 1;
for ($j = $left; $j < $right; $j++) {
if ($arr[$j] < $pivot) {
$i++;
list($arr[$i], $arr[$j]) = array($arr[$j], $arr[$i]);
}
}
list($arr[$i + 1], $arr[$right]) = array($arr[$right], $arr[$i + 1]);
return $i + 1;
}
$arr = array(3, 7, 8, 5, 2, 1, 9, 5, 4);
quickSort($arr, 0, count($arr) - 1);
print_r($arr);
上面的代碼定義了一個 quickSort
函數和一個 partition
函數來實現快速排序算法。在 quickSort
函數中,我們首先判斷左邊界是否小于右邊界,如果是,則進行以下操作:
partition
函數對數組進行劃分,并返回樞軸元素的索引。quickSort
函數對左半部分進行排序。quickSort
函數對右半部分進行排序。在 partition
函數中,我們選擇最右邊的元素作為樞軸元素,然后將數組中的元素按照與樞軸元素的大小關系進行劃分。如果當前元素小于樞軸元素,則將其與左邊的元素交換位置。最后將樞軸元素放到正確的位置上,并返回其索引。
在上面的示例代碼中,我們定義了一個包含亂序整數的數組 $arr
,然后調用 quickSort
函數對其進行排序。最后使用 print_r
函數輸出排序后的結果。