<?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));