代码
# 待排序数据
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function quickSort($arr){
$len = count($arr);
#如果参数数组元素小于等于一个则返回
if($len<=1){
return $arr;
}
#第一个子元素为默认基准元素
$base_num = $arr[0];
$left_array = $right_array = [];
for($i=1;$i<$len;$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,[$base_num],$right_array);
}
Out
array(11) {
[0]=>
int(1)
[1]=>
int(21)
[2]=>
int(32)
[3]=>
int(36)
[4]=>
int(39)
[5]=>
int(43)
[6]=>
int(54)
[7]=>
int(62)
[8]=>
int(66)
[9]=>
int(76)
[10]=>
int(78)
}