🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> 快速排序算法是对冒泡排序算法的改进,其基本思想是通过设置一个初始的中间值,来将需要排序的数组分成3部分:小于中间值的左边数组,中间值,大于中间值的右边数组,使用递归用相同的方式来排序左边和右边,最后合并数组。 ``` /** * 快速排序算法 * @param array $arr 要排序的数组 * @return array 排好序的数组 */ public function quick_sort($arr) { $count = count($arr); if ($count < 2) { return $arr; } //创建临时数组,以基准值为分界线,大于基准值的放在右侧,小鱼基准值的放在左侧 $leftArr = $rightArr = array(); //基准值,一般取数组第一个元素 $middle = $arr[0]; //循环数组与基准值比较 for ($i = 1; $i < $count; $i++) { if ($arr[$i] < $middle) { $leftArr[] = $arr[$i]; } else { $rightArr[] = $arr[$i]; } } //递归,将左右数组排序 $leftArr = $this->quick_sort($leftArr); $rightArr = $this->quick_sort($rightArr); //将排好序的临时数组合并 return array_merge($leftArr, array($middle), $rightArr); } ```