您的位置:首页 > 编程语言 > PHP开发

php:快速排序的两种方法

2017-05-27 22:07 288 查看
//$data=array(23,16,2,36,34,3,9,67,54);
//$ref=$data[0]; //$count=count($data)-1; //qksort($data,0,$count);
//$arr=other_qksort($data); //echo "<pre>"; //var_dump($arr); //echo "</pre>"; function quickSort($arr){       $len = count($arr);       if($len <= 1) {           return $arr;       }       $key = $arr[0];       $left_arr    = array();       $right_arr    = array();              for($i=1; $i<$len; $i++){           if($arr[$i] <= $key){               $left_arr[] = $arr[$i];           } else {               $right_arr[] = $arr[$i];           }       }       $left_arr    = quickSort($left_arr);       $right_arr    = quickSort($right_arr);       return array_merge($left_arr, array($key), $right_arr);   }第二种: //快速排序 function qksort(&$data,$i,$j){ if($i<$j){ $rkey=partition($data,$i,$j); qksort($data,$i,$rkey-1); qksort($data,$rkey+1,$j); } //return $data; } function partition(&$data,$i,$j){ $r=$data[$i]; //$count=count($data); while($i<$j){ while($i<$j && $data[$j]>$r) $j--; $rf=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$rf; while($i<$j && $data[$i]<$r) $i++; $rf=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$rf; } $data[$i]=$r; return $i; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: