失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP排序算法之快速排序

PHP排序算法之快速排序

时间:2023-11-23 11:16:26

相关推荐

PHP排序算法之快速排序

原理:找到当前数组中的任意一个元素(一般选择第一个元素),作为标准,新建两个空数组left、rignt,遍历整个数组元素,如果遍历到的元素比当前的元素小就放到数组left,比当前的元素大放到rignt,然后再对新数组进行同样的操作。

递归:

递归是一种函数调用自身的机制。

递归必须要有边界条件,也就是递归出口(退出递归)

递归前进段和递归返回段,也就是最后得到的值

当边界条件不满足时,递归前进;当边界条件(递归出口)满足是,递归返回。

PHP的递归非常消耗性能,尽量避免使用。

快速排序的原理复合递归原理

递归点:如果数组元素大于1,就需要再进行分解,所以我们的递归点就是新构造的数组元素个数大于1

递归出口:当数组元素个数为1,不需再对新数组进行排序。

实现代码:

$arr = [34,56,7,89,12,9];

function quick_sort($arr)

{

// 判断参数是否是一个数组if(!is_array($arr)) return false;// 递归出口:数组长度为1,直接返回数组$length = count($arr);if($length <= 1) return $arr;// 数组元素有多个,则定义两个数组$left = $right = [];// 循环遍历数组,把第一个元素当做比较的对象for($i=1;$i<$length;$i++){//判断当前元素的大小if($arr[$i] < $arr[0]){$left[] = $arr[$i];}else{$right[] = $arr[$i];}}// 递归调用$left = quick_sort($left);$right = quick_sort($right);// 将所有的结果合并return array_merge($left,[$arr[0]],$right);

}

print_r(quick_sort($arr));

如果觉得《PHP排序算法之快速排序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。