快速排序是对冒泡排序的一种改进
快速排序的基本思路是:设置一个基准元素,通过排序将需要排序的数据分割成两个部分,其中一部分的所有数据比基准元素小,另一部分的所有数据比基准元素大,然后对这两部分数据分别进行递归快速排序,最后将得到的数据和基准元素进行合并,就得到了所需数据。
代码
<?php
$arr = [8,1,10,9,5,7];
function quickSort($arr){
$lenth = count($arr);//获取数组个数
if($lenth <= 1){//小于等于一个不用往下走了
return $arr;
}
//选择基准元素。一般选第一个或最后一个
$first = $arr[0];
$left = array();//接收小于基准元素的值
$right = array();//接收大于基准元素的值
//循环从1开始,因为基准元素是0
for($i=1;$i<$lenth;$i++){
if($arr[$i]<$first){//小于基准元素的值
$left[] = $arr[$i];
}else{//大于基准元素的值
$right[] = $arr[$i];
}
}
//递归排序
$left = quickSort($left);
$right = quickSort($right);
//合并返回数组
return array_merge($left,array($first),$right);
}
echo '<pre>';
print_r(quickSort($arr));