// 快速排序
$parameter = array(6,1,2,7,9,3,4,5,10,8);
$left = 0;
$right = (count($parameter)-1);
quick($left,$right);
var_dump($parameter);
function quick($left,$right){
global $parameter;// 获取全局变量
if($left > $right){// 超过中间线 返回
return ;
}
$base = $parameter[$left];// tmp 作为中间基准数
$i = $left;
$j = $right;
while($i != $j){
// 顺序很重要,要先从右侧往左侧找
while($parameter[$j] >= $base && $i < $j){
$j--;
}
// 再从左向右找
while($parameter[$i]<= $base && $i < $j){
$i++;
}
// 交换两个数在数组中的位置
if($i < $j){
$temp = $parameter[$i];
$parameter[$i] = $parameter[$j];
$parameter[$j] = $temp;
}
}
// 最终将基准数归位
$parameter[$left] = $parameter[$i];
$parameter[$i] = $base;
quick($left,$i-1);// 继续处理左边,这里是一个递归的过程
quick($i+1,$right);//继续处理右边,这里是一个递归的过程
}
$parameter = array(6,1,2,7,9,3,4,5,10,8);
$left = 0;
$right = (count($parameter)-1);
quick($left,$right);
var_dump($parameter);
function quick($left,$right){
global $parameter;// 获取全局变量
if($left > $right){// 超过中间线 返回
return ;
}
$base = $parameter[$left];// tmp 作为中间基准数
$i = $left;
$j = $right;
while($i != $j){
// 顺序很重要,要先从右侧往左侧找
while($parameter[$j] >= $base && $i < $j){
$j--;
}
// 再从左向右找
while($parameter[$i]<= $base && $i < $j){
$i++;
}
// 交换两个数在数组中的位置
if($i < $j){
$temp = $parameter[$i];
$parameter[$i] = $parameter[$j];
$parameter[$j] = $temp;
}
}
// 最终将基准数归位
$parameter[$left] = $parameter[$i];
$parameter[$i] = $base;
quick($left,$i-1);// 继续处理左边,这里是一个递归的过程
quick($i+1,$right);//继续处理右边,这里是一个递归的过程
}