$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));