发布时间:2020/11/20 作者:天马行空 阅读(1441)
快速排序,是对冒泡排序的一种改进,它的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
算法步骤
1、从数列中挑出一个基准元素;
2、比基准值小(大)的放到前面,比基准值大的放到后面;
3、把放到前面的子数组及放到后面的子数组分别递归,最后合并返回
动图演示

代码实现:
public function quickSort($arr)
{
// 判断是否需要运行,因下面已拿出一个中间值,这里<=1
if (count($arr) <= 1) {
return $arr;
}
$middle = $arr[0]; // 中间值
$left = array(); // 接收小于中间值
$right = array(); // 接收大于中间值
// 循环比较
for ($i = 1; $i < count($arr); $i ++) {
if ($arr[$i] > $middle) {
// 大于中间值
$right[] = $arr[$i];
} else {
// 小于中间值
$left[] = $arr[$i];
}
}
// 递归排序划分好的2边
$left = $this->kuaisu($left);
$right = $this->kuaisu($right);
// 合并排序后的数据,别忘了合并中间值
return array_merge($left, array($middle), $right);
}