/** * 快速排序 * 原理: * 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。 * 最差时间复杂度 O(n*n) * 最优时间复杂度 O(nlogn) * 平均时间复杂度 O(nlogn) */ function Qsort($array) { if (!is_array($array) || empty($array)) { return array(); } $len = count($array); if($len <= 1){ return $array; } $key = $array[0]; $left = array(); $right = array(); for($i = 1; $i < $len; $i++) { if ($array[$i] <= $key) { $left[] = $array[$i]; } else { $right[] = $array[$i]; } } $left = Qsort($left); $right = Qsort($right); return array_merge($left, array($key), $right); }