介绍
怎么在PHP中使用递归实现一个快速排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>使用递归,则需要找到递归点和递归出口:强>
<强>递归点:>强如果数组的元素大于1,就需要再进行分解,所以我们的递归点就是新构造的数组元素个数大于1
<强>递归出口:强>我们什么时候不需要再对新数组不进行排序了呢?就是当数组元素个数变成1的时候,所以这就是我们的出口。
理解了原理,来看一下代码实现~
& lt; PHP ?//快速排序//待排序数组 美元arr=阵列(6、3、8、6、4、2、9日5日1);//函数实现快速排序 function quick_sort (arr)美元 { ,,,//判断参数是否是一个数组 ,,,如果(! is_array (arr)美元),return 假; ,,,//递归出口:数组长度为1,直接返回数组 ,,,长度=美元计数(arr); ,,,如果(length<美元;=1),return arr美元; ,,,//数组元素有多个,则定义两个空数组 ,,,数组$左右=$=(); ,,,//使用的循环进行遍历,把第一个元素当做比较的对象 ,,,(i=1; i<美元;$长度;美元我+ +) ,,,{ ,,,,,//判断当前元素的大小 ,,,,,如果(arr [$ i] & lt; arr美元[0]){ ,,,,,,,离开[]=arr美元($ i); ,,,,,其他}{ ,,,,,,,正确的[]=arr美元($ i); ,,,,,} ,,,} ,,,//递归调用 ,,,离开美元=quick_sort(左); ,,,对美元=quick_sort ($); ,,,//将所有的结果合并 ,,,return array_merge($离开,数组(arr[0]美元),对美元); }//调用 echo “& lt; pre>“; print_r (quick_sort (arr)美元);
运行结果:
数组 ( [0]才能,=在1 [1],才能=祝辞;2 [2],才能=祝辞;3 [3],才能=祝辞;4 [4],才能=祝辞;5 [5],才能=祝辞;6 [6],才能=祝辞;6 [7]才能,=在8 [8]才能,=在9 )
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。