PHP 递归实现冒泡算法
来源:互联网 发布:电脑网络异常怎么办 编辑:程序博客网 时间:2024/06/12 18:50
实现
/* 冒泡算法(递归实现)*/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; } } $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/>'; //结果为2echo $m.'<br/>'; //结果为1. 因为是后增量, 会先把初始的$index=1 赋给$m,然后$index自增1; $index = 1;$n = ++$index;echo $index.'<br/>'; //结果为2echo $n; //结果为2.因为是前增量, 会先执行$index+1的操作, 再赋值给$n;
这个可能不太好记住, 所以在使用的时候一定要注意, 在上面的问题中我就是忽略了这个问题导致了$index无限传递0值使得递归锁死。
0 0
- PHP 递归实现冒泡算法
- PHP 递归实现冒泡算法
- PHP实现 冒泡排序算法
- php实现的冒泡算法
- PHP实现冒泡排序算法
- 简单算法-冒泡排序[php实现]
- 冒泡/递归算法
- PHP实现冒泡排序、双向冒泡排序算法
- 【算法】冒泡排序与选择排序的递归实现
- 递归实现冒泡排序
- 递归实现冒泡排序
- php折半查找算法-递归实现和非递归实现
- php 实现猴子选大王递归算法
- [李景山php]算法系列|php 实现 冒泡排序!
- 递归算法和冒泡排序
- PHP冒泡算法
- php冒泡排序算法
- PHP冒泡排序算法
- 2015.01.02寻找2015年股市绝美之地(之二)—“白菜价”优质股精选
- Android实现TextView中文字链接的4种方式介绍及代码
- POCO中的字符串、文本和格式化
- PHP 快速排序算法
- PHP 扩展名获取
- PHP 递归实现冒泡算法
- Android 代码启动activity页面
- PHP-FIG笔记。我只是自己看
- PHP开发配置-windows环境下zend studio + wamp + zend debugger
- 积累的力量
- php学习笔记(四)魔术方法
- 理解TCP为什么需要进行三次握手(白话)
- PHP实现的支持断点续传的下载类
- Pomelo async waterfall