当前位置: 首页 > 后端技术 > PHP

PHP排序算法的快速排序

时间:2023-03-30 01:37:29 PHP

的原理:找到当前数组中的任意一个元素(一般是选择第一个元素),为准,创建left和right两个空数组,遍历整个数组元素。如果小于当前元素,则放在数组的左边,如果大于当前元素,则放在右边,然后对新数组进行同样的操作。递归:递归是一种函数调用自身的机制。递归必须有边界条件,即递归出口(e??xitrecursion),递归前向段和递归返回段,即最后得到的值。当不满足边界条件时,递归前进;当满足边界条件(递归退出)时,递归返回。PHP的递归非常消耗性能,尽量避免使用。快速排序的原理复合递归原理递归点:如果数组元素大于1,则需要分解,所以我们的递归点是新构造的数组元素个数大于1递归退出:当数组元素个数大于1时数组元素为1,不需要再对新数组进行排序。实现代码:$arr=[34,56,7,89,12,9];functionquick_sort($arr){//判断参数是否为数组if(!is_array($arr))returnfalse;//递归退出:数组长度为1,直接返回数组$length=count($arr);if($length<=1)return$arr;//数组元素有多个,则定义两个数组$left=$right=[];//遍历数组,以第一个元素为比较对象($i=1;$i<$length;$i++){//判断当前元素的大小if($arr[$i]<$arr[0]){$left[]=$arr[$我];}else{$right[]=$arr[$i];}}//递归调用$left=quick_sort($left);$right=quick_sort($right);//合并所有结果returnarray_merge($left,[$arr[0]],$right);}print_r(quick_sort($arr));