摘要:前言冒泡排序大概的意思是依次比較相鄰的兩個數,然后根據大小做出排序,直至最后兩位數。由于在排序過程中總是小數往前放,大數往后放,相當于氣泡往上升,所以稱作冒泡排序。
前言
冒泡排序大概的意思是依次比較相鄰的兩個數,然后根據大小做出排序,直至最后兩位數。由于在排序過程中總是小數往前放,大數往后放,相當于氣泡往上升,所以稱作冒泡排序。但其實在實際過程中也可以根據自己需要反過來用,大樹往前放,小數往后放。
實戰直接上代碼:
$demo_array[$j]) { $tmp = $demo_array[$i]; // 這里的tmp是臨時變量 $demo_array[$i] = $demo_array[$j]; // 第一次更換位置 $demo_array[$j] = $tmp; // 完成位置互換 } } } // 打印結果集 echo ""; var_dump($demo_array); echo "";
運行結果:
array(13) { [0]=> int(2) [1]=> int(5) [2]=> int(6) [3]=> int(11) [4]=> int(15) [5]=> int(21) [6]=> int(23) [7]=> int(25) [8]=> int(32) [9]=> int(43) [10]=> int(54) [11]=> int(65) [12]=> int(82) }
從上面結果中,我們可以看出,數組中鍵值順序已經被改變,排序成功。
如果說上面的算法是將數組中的鍵值按照值得大小從小到大進行排序,那么反之從大到小怎么操作呢?
很簡單,只要修改一個比較符號就可以了,如下:
"; var_dump($demo_array); echo "";
運行結果:
array(13) { [0]=> int(82) [1]=> int(65) [2]=> int(54) [3]=> int(43) [4]=> int(32) [5]=> int(25) [6]=> int(23) [7]=> int(21) [8]=> int(15) [9]=> int(11) [10]=> int(6) [11]=> int(5) [12]=> int(2) }
就這樣,輕松地改變了順序。
延伸如果仔細觀察以上代碼,就會發現有一個地方值得關注,就是互換變量值得地方。沒錯,這也是冒泡中的核心要點,這個技巧掌握了,以后同樣可以用到其他地方。
這里我們就稍微聊聊這個。
原理:現在有A、B兩個變量,需求是將其值互換。
看到題目,我們首先可能會想到直接賦值,但是如果直接賦值,不論先將誰賦值給誰,其中一個必定會被覆蓋,由此我們可以想出再弄出第三個變量C,暫時存儲A或B中的值,這樣就可以達到需求目標了。
$c = $a; // 暫存 $a = $b; // b給a $b = $c; // 暫存的a值再給b
注:其實不需要第三個變量,也是可以達到互換A、B變量值的,可以借助substr()、str_replace()等方法,這里因為是介紹冒泡排序的,所以不過多延伸了。
總結關于冒泡排序的就這么多,歸納起來,主要就是兩點:
循環比較
交換鍵值
能夠完成這兩點,基本就OK了,當然,關于冒泡排序的算法還有很多,這里只是其中一種,有興趣的同學可以自己研究下。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22032.html
摘要:總結比較排序算法都是空間復雜度為的原地排序算法,其中冒泡排序和插入排序兩兩比較不會交換相等的記錄,所以這兩種排序都是穩定排序,而選擇排序只是記錄最小值最后進行交換,所以會破壞相對順序,選擇排序不是穩定算法。 冒泡排序 兩兩比較相鄰記錄的關鍵字,如果反序則交換,大的數字往下沉,一直到最大的出現在數組最后 function swap(&$x, &$y) { $temp = $x; ...
摘要:尋找非零元素數組中所有元素排列組合后的最大值待排序數組排序方法參數校驗排序算法快速排序冒泡排序拼接用例測試這里只對快速排序方法使用組測試用例并列舉如下。 首發于 樊浩柏科學院 問題敘述:將一個非負元素數組中的所有元素排列組合在一起,找出值最大的那個排列情況。例如 [0, 9, 523, 94, 10, 4],排列組合后值最大數為:9945234100。 showImg(https:/...
摘要:而在證明算法是正確的基礎上,第二步就是分析算法的時間復雜度。算法的時間復雜度反映了程序執行時間隨輸入規模增長而增長的量級,在很大程度上能很好反映出算法的優劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...
摘要:冒泡排序冒泡排序英語是一種簡單的排序算法。冒泡排序算法的運作如下比較相鄰的元素。冒泡排序動態圖代碼實現我們來逐行分析下。這里的減是為了不在遍歷之前排序好的元素。記錄交換的次數,但代表沒有交換,序列已經有序。 冒泡排序 冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重復地進行直...
閱讀 2021·2019-08-30 15:52
閱讀 2975·2019-08-29 16:09
閱讀 1323·2019-08-28 18:30
閱讀 2453·2019-08-26 12:24
閱讀 1090·2019-08-26 12:12
閱讀 2273·2019-08-26 10:45
閱讀 565·2019-08-23 17:52
閱讀 810·2019-08-23 16:03