以下是 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
函数输出排序后的结果。