<?
//快速排序法:排序的原始是使用分治策略来把待排序的序列分为两个子序,
//在把分为两个子序当作原始数据再次分治依此下分直到最后,这里主要
// 分为三个步骤;
// a:从数列里边挑出一个元素,该元素称为'基准';
// b:扫描一遍数列,将所有比'基准'小的元素排在基准前面,所有比'基准'大的元素排在基准后面;
// c:通过递归,将各子序列划分为更小的序列,直到把小鱼基准的元素的子数列和大于基准值元素的子数列排序;
$arr = array(49,38,65,97,76,13,27);
$arr = quite($arr);
echo "<pre>";
var_dump($arr);exit;
echo "</pre>";
function quite($arr){
$len = count($arr);
// $key = $arr[0];
//有意思的是这里,当在这里写基准的时候,会报一个小警告
// 和同事讨论半天最后认为是,当传过来值的时候,这里并不知道
// 传进来的是什么,直接调用[0],在它认为是不和逻辑的,额
if($len <= 1){
return $arr;
}
$key = $arr[0];
//而基准写在这里就没有错误
$left = array();
$right = array();
for($i = 1; $i < $len; $i ++){
if($arr[$i] <= $key){
$left[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
$left = quite($left);
$right = quite($right);
return array_merge($left, array($key), $right);
}