本文写于2016-09-30 16:04
$arr = [72,6,57,88,60,42,83,73,48,85];
function quickSort(&$arr, $left , $right) {
if ($left >= $right) {
return;
}
$r = $right;
$l = $left;
$judge = $left; // 基准数下标
$index = $judge; // 上一个'位置'索引
$key = $arr[$judge];
while ($l < $r) {
// 从后往前找, 比基准数小的
while ($l < $r && $arr[$r] > $key) {
$r--;
}
$arr[$index] = $arr[$r];
$index = $r;
// 从前往后找, 比基准数大的
while ($l < $r && $arr[$l] <= $key) {
$l++;
}
$arr[$index] = $arr[$l];
$index = $l;
}
$arr[$index] = $key;
// 左区间
quickSort($arr, $left , $index - 1);
// 右区间
quickSort($arr, $index + 1 , $right);
}
quickSort($arr, 0, count($arr) - 1);
printArr($arr);
function printArr(&$arr) {
foreach ($arr as $li) {
echo $li . ' ';
}
echo PHP_EOL;
}