快速排序
//测试调用
public function aa(){
$ad = [12,3,5,132,5,13,56,23,56,89,16,13,54,6,984,4456,1,56,13,56,4,666,3,21564,321,45,31,341,2315,4];
$res = $this->QuickSort($ad);
return $res;
}
/**
*@func 快速排序
* @describe 从数组中选一个基准点,遍历数组,大于基准点的放到一个数组,其余放到另一个数组。
* 递归的对子数组排序
* @author vio
**/
private function QuickSort(array $arr=[]){
$count = count($arr);
if ($count<=1){
return $arr;
}
$pivot = $arr[0];
$left = $right = [];
for($i=1;$i<$count;$i++){
if($arr[$i]<$pivot){
array_push($left,$arr[$i]);
}else{
array_push($right,$arr[$i]);
}
}
$left = $this->QuickSort($left);
$right = $this->QuickSort($right);
return array_merge($left,[$pivot],$right);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接