//快速排序,从数组重找到一个基准,然后把所有的数和这个基准比较,分为大于这个基准的数组,和小于这个数的基准数组。然后再递归执行就行
$arr = [2,376,3,1,65,123,758,1234,7856,123];
//快速排序
//选取一个标准,和其他数据对比后将数据分为两批,递归执行后合并
function quickSort(&$arr, $sort = 'asc'){
//检查数据,多于一个数据才执行
$nCount = count($arr);
if($nCount > 1) {
//选取标准(第一个数据)
$nStandard = $arr[0];
$arrLeftData = [];
$arrRightData = [];
//遍历,注意这里从1开始比较
for($i = 1; $i < $nCount; $i++) {
if($sort == 'desc') {
$arr[$i] > $nStandard ? $arrLeftData[] = $arr[$i] : $arrRightData[] = $arr[$i];
} else {
$arr[$i] > $nStandard ? $arrRightData[] = $arr[$i] : $arrLeftData[] = $arr[$i];
}
}
$arr = array_merge(quickSort($arrLeftData, $sort), array($nStandard), quickSort($arrRightData, $sort));
}
return $arr;
}
$arr = quickSort($arr,'asc');
print_r($arr);exit;