怎么在PHP中使用递归实现一个快速排序算法

  介绍

怎么在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   )

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

怎么在PHP中使用递归实现一个快速排序算法