function qsort($arr){
if(!isset($arr[1])){
return $arr;
}
for ($i=0; $i < count($arr); $i++) {
if($arr[$i+1]<$arr[0]){
$larr[] = $arr[$i+1];
}
if($arr[$i+1]>=$arr[0]){
$rarr[] = $arr[$i+1];
}
}
$larr = qsort($larr);
$larr[] = $arr[0];
$rarr = qsort($rarr);
return array_merge($larr,$rarr);
}
print_r(qsort(array(411,21,333,666)));
输出Array ( [0] => [1] => [2] => 21 [3] => 333 [4] => 411 [5] => 666 )
为什么前面多了2个空值?
for循环的结束条件是$i<count,而里面访问的是$i+1,循环到最后访问越界了
然后你一定是关了报错,所以PHP没有报错,而是认为结果是空值继续执行下去了,所以排序的结果中混入了空值
正确:
https://3v4l.org/CIKED