快速排序原理:在要排序的数字中取一个值,把大于这个这个值和小于这个值得数字分别放到数组里,在递归执行,执行取值,在把大于这个这个值和小于这个值得数字分别放到数组里,最后执行的时候数组就一个元素,执行效率快排平均效率O(nlogn),最好情况O(nlogn)每次取中间值得,最坏情况是当数组有序时,退化成O(n^2)
$arr=array(6,3,9,6,4,2,8,5,1); function paixu($arr){ $left=$right=array(); if(!is_array($arr)) { return false; } $length=count($arr); if($length<=1) { return $arr; } for($i=1;$i<$length;$i++) { //判断当前元素的大小 if($arr[$i]<$arr[0]){ $left[]=$arr[$i]; }else{ $right[]=$arr[$i]; } } $left=quick_sort($left); $right=quick_sort($right); //将所有的结果合并 return array_merge($left,array($arr[0]),$right); }
QQ交流群:136351212
查看原文: