手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP冒泡算法详解(递归实现)
PHP冒泡算法详解(递归实现)
摘要:实现复制代码代码如下:/*冒泡算法(递归实现)*/functionmaoPao($array,$index=0){$count=count(...

实现

复制代码 代码如下:

/*

冒泡算法(递归实现)

*/

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/>'; //结果为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值使得递归锁死。

【PHP冒泡算法详解(递归实现)】相关文章:

PHP时间和日期函数详解

PHP Hash算法:Times33算法代码实例

PHP中的魔术方法总结和使用实例

推荐文章系统(一)

网站加速 PHP 缓冲的免费实现方法

phplot生成图片类用法详解

PHP的伪随机数与真随机数详解

PHP SOCKET编程详解

PHP获取数组的键与值方法小结

用PHP将数据导入到Foxmail

精品推荐
分类导航