快排的核心就是切分,然後遞歸。
首先取一個要進行比較的值,一般用第一個就可以 $mid 。簡單易記。再初始化 2 個容器,$left, $right 分別存小值和大值,正序排。
然後進行數組遍歷,大於比較值的放 $right ,小於的放 $left。 再遞歸遍歷就可以了。
可以先想象用一個小數組輸入 [1,3,2],默唸運行一下程序
<code>function quickSort($arr)
{
if (count($arr) <= 1) {
return $arr;
}
$mid = $arr[0];
$left = $right = [];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i] > $mid) {
$right[] = $arr[$i];
} else {
$left[] = $arr[$i];
}
}
$left = quickSort($left);
$right = quickSort($right);
return array_merge($left, [$mid], $right);
}/<code>
閱讀更多 PHP程序員 的文章