快速排序-PHP


$arr = array(4,2,5,1,3);
// 快速排序
function quickSort($arr) {
    $len = count($arr);
    if ($len <= 1) { // 是否继续进行
        return $arr;
    }
    $mid = $arr[0]; // 以第一个元素为基准
    $leftArray = $rightArray = []; // 初始化
    for ($i=1; $i<$len; $i++) { // 便利所有元素
        if ($arr[$i] < $mid) { // 若当前元素小于基准元素则放在左边,否则放右边
            $leftArray[] = $arr[$i];
        } else {
            $rightArray[] = $arr[$i];
        }
    }
    $leftArray = quickSort($leftArray); // 左侧数组递归循环
    $rightArray = quickSort($rightArray); // 右侧数组递归循环

    return array_merge($leftArray, array($mid), $rightArray); //合并
}
$res = quickSort($arr);
print_r($res);

打印结果:

Array
(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
  [4] => 5
)

posted @ 2021-03-21 16:16  蓝晓焰  阅读(26)  评论(0编辑  收藏  举报