思路:找一个值作为中间值,然后比他小的放到左边,比他大的放到右边,递归查找排序,最后这个值左边都是比他小的,右边都是比他大的,他是中间的位置,最后合并数组
<?php
$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);
function quick_sort($a){
if (count($a)<=1){
return $a;
}
$middle = $a[0];
$left = [];
$right = [];
for($i=1; $i<count($a); $i++){
if ($middle < $a[$i]){
$right[] = $a[$i];
} else {
$left[] = $a[$i];
}
}
$left = quick_sort($left);
$right = quick_sort($right);
return array_merge($left, [$middle], $right);
}
var_dump(quick_sort($a));