使用php 实现快速排序算法

思路如下,把要排序的数组传入函数,如果数组里只有1个值就返回自己,使用$data[0]作为基准,设置两个数组,遍历$data,一个数组放比基准点小的,一个放比基准点大的,循环递归自己,最后把小的数组,基准值,大的数组合并成一个新数组返回。代码如下

function kuaisupaixu($data = array()){
$n = count($data);
if($n<=1){
return $data;
};
$leftarr = array();
$rightarr = array();

$base = $data[0]; //选择基准点
for($i=1;$i<$n;$i++){
if($data[$i] <= $base){
$leftarr[] = $data[$i];
//array_push($leftarr,$data[$i]);
}
else{
$rightarr[] = $data[$i];
//array_push($rightarr,$data[$i]);
}
}
$leftarr = $this->kuaisupaixu($leftarr);
$rightarr = $this->kuaisupaixu($rightarr);

return array_merge($leftarr,array($base),$rightarr);
}

 

posted on 2016-11-07 11:51  Lightblessme  阅读(371)  评论(0)    收藏  举报

导航