PHP冒泡算法详解(递归实现)
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-25 11:28:52 浏览: 评论:0
本文是分享了一段使用递归实现php冒泡算法的代码,并记录了使用过程终于到的问题以及解决方法,有需要的小伙伴可以参考下哦。
实现代码如下:
- /*
- 冒泡算法(递归实现)
- */
- function maoPao($array, $index=0)
- {
- $count = count($array);
- if(($count-1) <= $index)
- return $array;
- for($i=$count-1; $i>$index; $i-- )
- {
- if($array[$i] < $array[$i-1])
- {
- $tmp = $array[$i];
- $array[$i] = $array[$i-1];
- $array[$i-1] = $tmp;
- }
- }//www.phpfensi.com
- $index++;
- return maoPao($array, $index);
- //return maoPao($array, $index++);
- }
- $arr = array(12,4,3,1,9,5,6,8,7);
- var_dump(maoPao($arr));
结果:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 [8] => 12 )
问题:
在尝试这个实现的时候遇到了一个问题,还未解决。
在这里:
- $index++;
- return maoPao($array, $index);
- //return maoPao($array, $index++);
如果直接使用第三行,而不是先$index++,再ruturn的话就会进入死循环.我在函数的开始输出$index,都是0,就是说$index++后传递给递归函数的参数不是$index++应该的结果(即$index=$index+1).
maoPao($array, $index++)不是$index++; return maoPao($array, $index);的简短写法吗,为何两种结果不一样,希望能得到各位的解答。
补充:
解答:
$index++与++$index两者的区别, $index++被称作后增量, ++$index被称为前增量, 虽然最后的$index的结果都是会+1。 但传递变量的时候会有不一样的地方。
- $index = 1;
- $m = $index++;
- echo $index.'<br/>'; //结果为2
- echo $m.'<br/>'; //结果为1. 因为是后增量, 会先把初始的$index=1 赋给$m,然后$index自增1;
- $index = 1;
- $n = ++$index;
- echo $index.'<br/>'; //结果为2
- echo $n; //结果为2.因为是前增量, 会先执行$index+1的操作, 再赋值给$n;
这个可能不太好记住, 所以在使用的时候一定要注意, 在上面的问题中我就是忽略了这个问题导致了$index无限传递0值使得递归锁死。
Tags: PHP冒泡算法 PHP递归
相关文章
- ·PHP 冒泡/快速/选择/插入排序算法实例讲解(2015-12-24)
- ·php递归方法实现无限分类实例(2014-06-28)
- ·php递归用法与递归目录实例(2014-07-11)
- ·不用递归实现php树程序代码(2014-07-30)
- ·php无限极分类递归排序(2014-10-22)
- ·PHP用递归返回无限级分类回字符串或数组实例(2015-04-08)
- ·PHP递归实现层级树状展开(2019-10-20)
- ·PHP不用递归遍历目录下所有文件的代码(2021-03-12)
- ·php可应用于面包屑导航的递归寻找家谱树实现方法(2021-05-09)
- ·php实现递归与无限分类的方法(2021-05-14)
- ·PHP使用递归生成文章树(2021-05-22)
- ·php递归实现无限分类的方法(2021-06-14)
- ·php实现递归的三种基本方式(2021-06-16)
- ·php实现递归的三种基本方式(2021-06-16)
- ·php实现的递归提成方案实例(2021-06-26)
- ·PHP递归实现汉诺塔问题的方法示例(2021-08-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)