/**
* 快速排序算法
*
* 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,
* 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
*
* @param array $arr
* @return $arr
*/
function quickSort($arr = array())
{
if(!is_array($arr) || empty($arr))
{
return $arr;
}
$length = count($arr);
$base = $arr[0]; //选择第一个数字作为基准
$left_array = array(); //小于基准
$right_array = array(); //大于等于基准
for($i=1; $i<$length; $i++) {
if($base > $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, array($base), $right_array);
}
php 快速排序算法
最新推荐文章于 2022-12-30 15:05:51 发布