//快速排序,从数组重找到一个基准,然后把所有的数和这个基准比较,分为大于这个基准的数组,和小于这个数的基准数组。然后再递归执行就行 $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;