快速排序

本文写于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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容