/*
冒泡演算法(遞迴實現)
*/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 對每乙個相鄰元素進行互動,直到最後乙個。一趟下來,最大的...