PHP冒泡算法的详细解决方案(递归实现)

实现

复制代码代码如下所示:

*

冒泡算法(递归实现)

* /

功能的冒泡($array,美元指数= 0)

{

计数=(数组);

(如果($ count-1)<=美元指数)

返回数组;

对(我=美元美元美元美元指数count-1;我>;我--)

{

如果(数组$ { $我} <数组{ $ I-1 })

{

$ = $数组{ $ I };

数组$ { $我} =数组{ $ I-1 };

数组$ { $ I-1 } = $ TMP;

}

}

指数+;

返回的冒泡($array,美元指数);

/ /回报的冒泡($array,美元指数+ +);

}

$ ARR =阵列(12,4,3,1,9,5,6,8,7);

var_dump(冒泡($ ARR));



结果uff1a

复制代码代码如下所示:

数组({ 0 } = 1 { 1 } > 3 { 2 } = 4 { 3 } = 5 { 4 } = 6 { 5 } = 7 { 6 } = 8 { 7 } = 9 { 8 } = 12)



问题:

在尝试这个实现时,一个问题还没有得到解决。

广告代理:

复制代码代码如下所示:

指数+;

返回的冒泡($array,美元指数);

/ /回报的冒泡($array,美元指数+ +);

/ ******************

如果我们用第三行代替美元指数再回+第一直接,我们将进入死循环。我在函数的开头输出$索引,这0个都是。也就是说,index + +传递给递归函数的参数不是$ + +的结果,也就是$ index = index + 1。

冒泡($array,美元指数+ +)不是美元指数+ +;返回的冒泡($array,美元指数);它是一个短期的形式为什么会有两种不同的结果我希望得到你的答案。

****************** /



补充:

答案uff1a

复制代码代码如下所示:

美元指数+ + + +美元指数,美元指数+称为后增量之间的差异,和+ +美元指数称为正向增量,虽然最终的结果都是美元指数+ 1.but将有一个不同的地方当变量传递。

指数= 1;

美元=索引+ +;

结果为2。

结果是1。因为在增量之后,将第一个初始的$ index=1分配给m,然后$ index递增1;

指数= 1;

美元索引;

结果为2。

结果是2。因为它在增量之前,将首先执行$ + 1操作,然后分配给n;



这可能不是很好记住,所以我们必须注意,当我们使用它。在上面的问题中,我忽略了这个问题,导致索引无限传输0个值,使得递归锁定。