php快速排序怎样实现
导读:快速排序是一种高效的排序算法,它的基本思想是使用分治法(Divide and Conquer)。在PHP中,你可以按照以下步骤实现快速排序: 选择一个基准值(pivot),通常选择数组的第一个元素或最后一个元素。 将数组中的元素分为两部分...
快速排序是一种高效的排序算法,它的基本思想是使用分治法(Divide and Conquer)。在PHP中,你可以按照以下步骤实现快速排序:
- 选择一个基准值(pivot),通常选择数组的第一个元素或最后一个元素。
- 将数组中的元素分为两部分,一部分小于基准值,另一部分大于基准值。这个过程称为分区(partitioning)。
- 对这两部分递归地执行快速排序。
- 将排序后的两部分和基准值合并。
下面是一个简单的PHP实现:
function quick_sort(&
$arr, $left, $right) {
if ($left <
$right) {
$pivot_index = partition($arr, $left, $right);
quick_sort($arr, $left, $pivot_index - 1);
quick_sort($arr, $pivot_index + 1, $right);
}
}
function partition(&
$arr, $left, $right) {
$pivot = $arr[$left];
// 选择基准值,这里选择第一个元素
while ($left <
$right) {
while ($left <
$right &
&
$arr[$right] >
= $pivot) {
$right--;
}
$arr[$left] = $arr[$right];
while ($left <
$right &
&
$arr[$left] <
= $pivot) {
$left++;
}
$arr[$right] = $arr[$left];
}
$arr[$left] = $pivot;
return $left;
}
// 测试数组
$arr = [3, 6, 8, 10, 1, 2, 1];
quick_sort($arr, 0, count($arr) - 1);
print_r($arr);
这个实现会对传入的数组进行原地排序,也就是说它会直接修改传入的数组。如果你不希望修改原数组,可以在调用quick_sort
函数之前创建一个数组的副本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: php快速排序怎样实现
本文地址: https://pptw.com/jishu/710385.html