快速排序是以其中一个数为比较标准,其他比较的数分块处理,应用递归按相同想法处理数据
比如:4 3 6 2 1 7 8
以4为比较对象 排序为 3 2 1 6 7 8
左边为 3 2 1 右边 为 6 7 8
左右两边再次分块排序 分别为 2 1 和 7 8 然后 2 1 和 7 8 再次排序
//快速排序
$arr_test = array(4,2,9,3,6,7,1,5,4,5,'a','d','c','b','A','B','D','C','a');
function fastSort($sortarr){
if(count($sortarr) <= 1) {
return $sortarr;
}
$start = $sortarr[0];
$middle = array();
$left = array();
$right = array();
foreach($sortarr as $key => $val){
if(ord($val) > ord($start)) {
array_push($right,$val);
} elseif(ord($val) < ord($start)) {
array_push($left,$val);
} else {
array_push($middle,$val);
}
}
$left = fastSort($left);
$right = fastSort($right); return array_merge($left,$middle,$right);
}
$aaa = fastSort($arr_test);
var_dump($aaa);