原理:先从数据序列中选一个元素,并将序列中所有比该元素小的元素都放到它的左边或者右边,再对左右两边分别用同样的方法,直到每一个待处理的序列长度为1,处理结束。
$arr = [49,38,65,97,76,13,27,55];
$arr = quickSort($arr);
//var_dump($arr);die;
function quickSort($arr)
{
// 终止 数组中有一个数组
$len = count($arr);
if($len < 2){
return $arr;
}
// 找一个中间值
$middle = $arr[0];
$leftArr = [];
$righArr = [];
for ($i=1; $i <= $len-1; $i++){
// 比较中间值 大的放在右边
// 小的放在左边
if($arr[$i] <= $middle){
$leftArr[] = $arr[$i];
}else{
$righArr[] = $arr[$i];
}
}
// 左边自己再排序 右边再排序
$leftArr = quickSort($leftArr);
$righArr = quickSort($righArr);
return array_merge($leftArr,[$middle],$righArr);
}