class="php" name="code">/** * 快速排序 分治法 * 1 把小于指定数($key = $arr[0])的 放在左侧数组(left);大于$key 放在右侧数组 * 2 合并 数组 * * @param unknown $arr */ function quick_sort($arr) { $count = count($arr); if (count($arr) > 1) { $key = $arr[0]; $left = []; $right = []; for ($i = 1; $i < $count; $i ++) { if ($arr[$i] <= $key) { $left[] = $arr[$i]; } elseif ($arr[$i] > $key) { $right[] = $arr[$i]; } } $left = quick_sort($left); $right = quick_sort($right); return array_merge($left, [ $key ], $right); } else { return $arr; } }
?