php 实现 数组排序(二分快排)递归

function quickSort($arr)
{
# 先判断是否需要继续进行

$length = count($arr);

if ($length <= 1) return $arr;

# 选择第一个元素作为基准

$base_num = $arr[0];

# 遍历除了标尺外的所有元素,按照大小关系放入两个数组内

# 初始化两个数组

$left_array = array(); # 小于基准数的

$right_array = array(); # 大于基准数的

for ($i = 1; $i < count($arr); $i++) {
if ($base_num > $arr[$i]) $left_array[] = $arr[$i]; #放入左边数组
else $right_array[] = $arr[$i]; # 放入右边
}

# 再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数

$left_array = quickSort($left_array);

$right_array = quickSort($right_array);

return array_merge($left_array, array($base_num), $right_array); # 合并
}
$sortArr = quickSort($arr);
var_dump($sortArr);

posted on 2021-04-06 11:54  刷哥  阅读(236)  评论(0编辑  收藏  举报

导航