快速排序

<?php

/**
 * 快速排序 随机选择数组一个元素作为中间基准数字,并以此数字来不断分割数组为左右两个
 *
 * @param [type] $arr
 * @return void
 */
function quick(array $arr):array
{
    $len = count($arr);
    if ($len < 1) {
        return $arr;
    }
    // 左边数组小数
    $left = [];
    // 右边数组大数
    $right = [];
    // 基准数字
    $mid = $arr[0];
    for ($i=1; $i < $len; $i++) { 
        if ($arr[$i] > $mid) {
            $right[] = $arr[$i];
        } else {
            $left[] = $arr[$i];

        }
    }
    $left = quick($left);
    $right = quick($right);
    return array_merge($left, [$mid], $right);
}
$arr = [32,44,67,334,99,1];
var_dump(quick($arr));

  

posted @ 2020-09-06 18:13  brave_jman  阅读(153)  评论(0编辑  收藏  举报