$arr = [2,34,1,56,3,33,33,3,24,78,12];
function qsort($arr){//问题重复的数字不会被排序
$l = count($arr);
if ($l <= 1){
return $arr;
}
$center = floor($l / 2) - 1;//到这里$l最小都为二,用远取不到0,所以要减一
$m = $arr[$center];
$f = $b = [];
foreach($arr as $k => $v){
if($k==$center){
continue;//不跟自己比较,跳出本次循环,否则会死循环
}
if ($v <= $m){
$f[] = $v;
}elseif ($v > $m){
$b[] = $v;
}
}
$b[] = $m;
return array_merge(qsort($f), qsort($b));
}
echo "<pre>";
print_r(qsort($arr));