溫馨提示×

php快速排序代碼怎么寫

PHP
小樊
92
2024-12-02 12:18:44
欄目: 編程語言

以下是 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 函數中,我們首先判斷左邊界是否小于右邊界,如果是,則進行以下操作:

  1. 調用 partition 函數對數組進行劃分,并返回樞軸元素的索引。
  2. 遞歸調用 quickSort 函數對左半部分進行排序。
  3. 遞歸調用 quickSort 函數對右半部分進行排序。

partition 函數中,我們選擇最右邊的元素作為樞軸元素,然后將數組中的元素按照與樞軸元素的大小關系進行劃分。如果當前元素小于樞軸元素,則將其與左邊的元素交換位置。最后將樞軸元素放到正確的位置上,并返回其索引。

在上面的示例代碼中,我們定義了一個包含亂序整數的數組 $arr,然后調用 quickSort 函數對其進行排序。最后使用 print_r 函數輸出排序后的結果。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女