快速排序使用分治策略来把待排序数据序列分为两个子序列,具体步骤为:
1、从数列中挑出一个元素,称该元素为“基准”。
2、扫描一遍数列,将所有比“基准”小的元素排在基准前面,所有比“基准”大的元素排在基准后面。
3、通过递归,将各子序列划分为更小的序列,直到把小于基准值元素的子数列和大于基准值元素的子数列排序。
$a = [7,3,5,1,9,8,2,4,6,12,11];
//快速排序(数组排序)
function quickSort($arr){
$num = count($arr);
$l=$r=0;
for($i=1;$i<$num;$i++){
if($arr[$i] < $arr[0]){
$left[] = $arr[$i];
$l++;
}else{
$right[] = $arr[$i];
$r++;
}
}
if($l > 1){
$left = quickSort($left);
}
$newArr = $left;
$newArr[] = $arr[0];
if($r > 1){
$right = quickSort($right);
}
for($i=0;$i<$r;$i++){
$newArr[] = $right[$i];
}
return $newArr;
}
$a2 = quickSort($a);
var_dump($a2);
相关推荐:
PHP顺序查找算法:https://blog.csdn.net/sosemseo/article/details/113771096
PHP二分查找算法:https://blog.csdn.net/sosemseo/article/details/113770556
PHP快速排序算法:https://blog.csdn.net/sosemseo/article/details/113770157
php快速排序:https://blog.csdn.net/sosemseo/article/details/108538796
php冒泡排序:https://blog.csdn.net/sosemseo/article/details/104993564