十大排序算法-快速排序 PHP 实现
快排的核心就是切分,然后递归。
首先取一个要进行比较的值,一般用第一个就可以 $mid 。简单易记。再初始化 2 个容器,$left, $right 分别存小值和大值,正序排。
然后进行数组遍历,大于比较值的放 $right ,小于的放 $left。 再递归遍历就可以了。
可以先想象用一个小数组输入 [1,3,2],默念运行一下程序
function quickSort($arr)
{
if (count($arr) <= 1) {
return $arr;
}
$mid = $arr[0];
$left = $right = [];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i] > $mid) {
$right[] = $arr[$i];
} else {
$left[] = $arr[$i];
}
}
$left = quickSort($left);
$right = quickSort($right);
return array_merge($left, [$mid], $right);
}