<?php /** * 快速排序 随机选择数组一个元素作为中间基准数字,并以此数字来不断分割数组为左右两个 * * @param [type] $arr * @return void */ function quick(array $arr):array { $len = count($arr); if ($len < 1) { return $arr; } // 左边数组小数 $left = []; // 右边数组大数 $right = []; // 基准数字 $mid = $arr[0]; for ($i=1; $i < $len; $i++) { if ($arr[$i] > $mid) { $right[] = $arr[$i]; } else { $left[] = $arr[$i]; } } $left = quick($left); $right = quick($right); return array_merge($left, [$mid], $right); } $arr = [32,44,67,334,99,1]; var_dump(quick($arr));