快速排序
<?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));
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号