//$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;
}