/** * 快速排序 * @param $arr * @return array */ $arr自定义一个数组,先得到该数组的长度,定义一个left数组 ,right数组,注意这必须判断数组长度,如果小于1就让他直接返回,不然引用会报错,外层一个for循环 是判断数组长度,用$arr【0】第一个数字跟第二个数字对比,如果大于第二个数字,把它放在left这个数组里面,如果小于放在right里面,循环一轮之后会得到left和right 这两个数组,再用这个数组调用自己定义的goSort方法进行循环,之后拼接数组。注意:$arr[0]不是数组,需要转换为数组。 function goSort($arr){ $len=count($arr); $left=array(); $right=array(); if($len<=1){ return $arr; } for($i=1;$i<$len;$i++){ if($arr[$i]<$arr[0]){ $left[]=$arr[$i]; }else{ $right[]=$arr[$i]; } } $left=goSort($left); // return $left; $right=goSort($right); return array_merge($left,array($arr[0]),$right); }
快速排序写法和思路
猜你喜欢
转载自blog.csdn.net/weixin_42262935/article/details/80542663
今日推荐
周排行