摘要:實現冒泡算法遞歸實現結果問題在嘗試這個實現的時候遇到了一個問題,還未解決。補充解答與兩者的區別,被稱作后增量,被稱為前增量,雖然最后的的結果都是會。但傳遞變量的時候會有不一樣的地方。
實現
/* 冒泡算法(遞歸實現) */ 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."
"; //結果為2 echo $m."
"; //結果為1. 因為是后增量, 會先把初始的$index=1 賦給$m,然后$index自增1; $index = 1; $n = ++$index; echo $index."
"; //結果為2 echo $n; //結果為2.因為是前增量, 會先執行$index+1的操作, 再賦值給$n;
這個可能不太好記住, 所以在使用的時候一定要注意, 在上面的問題中我就是忽略了這個問題導致了$index無限傳遞0值使得遞歸鎖死。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20873.html
摘要:本文將介紹快速排序計數排序梳排序堆排序歸并排序希爾排序選擇排序插入排序地精排序聯合冒泡排序雞尾酒排序冒泡排序奇偶排序使用標志的冒泡排序種排序算法的實現。是一種不穩定的排序算法。 本文將介紹快速排序、計數排序、梳排序、堆排序、歸并排序、希爾排序、選擇排序、插入排序、地精排序、聯合冒泡排序、雞尾酒排序、冒泡排序、奇偶排序、使用標志的冒泡排序14種排序算法的實現。本文是由于閱讀了文章《測試評...
摘要:概念這里借用百度百科的一張圖來,非常形象快速排序算法是對冒泡算法的一個優化。獲取已經打亂了順序的數組快速排序這里引用的是我之前寫的冒泡算法排序冒泡運行結果 概念 這里借用百度百科的一張圖來,非常形象:showImg(https://segmentfault.com/img/bVdlR6); 快速排序算法是對冒泡算法的一個優化。他的思想是先對數組進行分割, 把大的元素數值放到一個臨時數...
摘要:而在證明算法是正確的基礎上,第二步就是分析算法的時間復雜度。算法的時間復雜度反映了程序執行時間隨輸入規模增長而增長的量級,在很大程度上能很好反映出算法的優劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...
摘要:良好的排序算法具有進行最少的比較和交換的特征。冒泡排序是一個基于比較的排序算法,被認為是效率最低的排序算法之一?,F在讓我們使用實現冒泡排序算法。插入排序到目前為止,我們已經看到了兩種基于比較的排序算法。 預警 本文適合對于排序算法不太了解的新手同學觀看,大佬直接忽略即可。因為考慮到連貫性,所以篇幅較長。老鐵們看完需要大概一個小時,但是從入門到完全理解可能需要10個小時(哈哈哈,以我自己...
摘要:快速排序快速排序是對冒泡排序的一種改進。獲取中間數兩值相等,返回元素比目標大,查找左部元素比目標小,查找右部查找失敗擴展閱讀冒泡排序實現快速排序實現各種經典算法常見算法面試篇實現二分查找法 本書的 GitHub 地址:https://github.com/todayqq/PH... 算法可以說是大廠的必考題,對于算法,一定要理解其中的精髓、原理。 冒泡排序 冒泡排序的原理:一組數據,...
閱讀 2170·2021-11-25 09:43
閱讀 2249·2021-11-24 09:39
閱讀 1540·2021-11-22 12:02
閱讀 2984·2021-11-17 09:33
閱讀 3408·2021-11-15 11:38
閱讀 2718·2021-10-13 09:40
閱讀 1065·2021-09-22 15:41
閱讀 1687·2019-08-30 10:58