PHP 遞迴實現冒泡演算法

2021-06-28 00:26:20 字數 1342 閱讀 9266

/*

冒泡演算法(遞迴實現)

*/function maopao($array, $index=0)

}$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.'

'; //結果為2

echo $m.'

'; //結果為1. 因為是後增量, 會先把初始的$index=1 賦給$m,然後$index自增1;

$index = 1;

$n = ++$index;

echo $index.'

'; //結果為2

echo $n; //結果為2.因為是前增量, 會先執行$index+1的操作, 再賦值給$n;

這個可能不太好記住, 所以在使用的時候一定要注意, 在上面的問題中我就是忽略了這個問題導致了$index無限傳遞0值使得遞迴鎖死。

PHP 遞迴實現冒泡演算法

冒泡演算法 遞迴實現 function maopao array,index 0 index return maopao array,index return maopao array,index arr array 12,4,3,1,9,5,6,8,7 var dump maopao arr ar...

php 實現冒泡演算法

氣泡排序的基本思想是 每次比較兩個相鄰的元素,如果它們的順序錯誤就把它們交換過來 例如我們需要將 12 35 99 18 76 這 5個數進行從大到小的排序。既然是從大到小排序,也就是說越小的越靠後,你是不是覺得我在說廢話,但是這句話很關鍵 首先比較第 1 位和第 2 位的大小,現在第 1 位是 1...

php實現的冒泡演算法

氣泡排序,英語為bubble sort,台灣翻譯為泡沫排序。時間複雜度為o n 2 空間複雜度為o 1 屬於原地排序,是穩定的排序演算法。以公升序為例,氣泡排序可以這樣描述 1 比較相鄰的兩個元素,如果第乙個元素大於第二個元素,就交換他們 2 對每乙個相鄰元素進行互動,直到最後乙個。一趟下來,最大的...