PHP

php快速排序代码怎么写

小樊
81
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
看了该问题的人还看了