输出array ( [0] => [1] => [2] => 21 [3] => 333 [4] => 411 [5] => 666 )
为什么前面多了2个空值?
回复内容: function qsort($arr){ if(!isset($arr[1])){ return $arr; } for ($i=0; $i =$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然后你一定是关了报错,所以php没有报错,而是认为结果是空值继续执行下去了,所以排序的结果中混入了空值
正确:
https://3v4l.org/ciked
function querysort($arr,$order='asc') { if (count($arr) $value) { if ($order=='desc') { if ($value $val) { $arr_left[] = $value; } else { $arr_right[] = $value; } } } $arr_left = querysort($arr_left,$order); $arr_right = querysort($arr_right,$order); return array_merge($arr_left,[$val],$arr_right); } $arr = querysort(array(411,21,333,666)); echo ; var_dump($arr);
应该是array_merge的原因
为啥要这样写排序呢? 内置的数组排序函数可以用啊!
