PHP內功之排序__1.氣泡排序
阿新 • • 發佈:2018-11-15
氣泡排序
好記性,不如爛筆頭
1.程式碼
<?php /** * Created by PhpStorm. * User: suntoo-ssd-02 * Date: 2018/10/9 * Time: 14:35 * 氣泡排序 * 思路: 像冒泡一樣,每次衝陣列中 冒出一個最大的數出來 * 白話: 有10個不同大小的氣泡,從底至上將較小的氣泡向上升,一直迴圈到10個氣泡大小有序 * 重點: 在氣泡排序中,最重要的思想是兩兩比較,將兩者較小的升上去 */ function BubbleSort(array $container){ //獲取陣列的總長度 $count = count($container); if ($count > 1) { //開始迴圈(外迴圈) for ($i = 0; $i < $count; $i++) { //再次迴圈(內迴圈) for ($j = 0; $j < $count - ($i + 1); $j++) { //如果內迴圈中的第一個大於第二個數 則將 他們的位置對調 if ($container[$j] > $container[$j + 1]) { $temp = $container[$j]; $container[$j] = $container[$j + 1]; $container[$j + 1] = $temp; } } } return $container; } } //測試 echo "<pre>"; var_dump(BubbleSort([4, 21, 41, 2, 53, 1, 213, 31, 21, 423])); ?>
執行過程
---外迴圈---第 1 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
- - - 內迴圈 - - - 第 3 次
- - - 內迴圈 - - - 第 4 次
- - - 內迴圈 - - - 第 5 次
- - - 內迴圈 - - - 第 6 次
- - - 內迴圈 - - - 第 7 次
- - - 內迴圈 - - - 第 8 次
- - - 內迴圈 - - - 第 9 次
---外迴圈---第 2 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
- - - 內迴圈 - - - 第 3 次
- - - 內迴圈 - - - 第 4 次
- - - 內迴圈 - - - 第 5 次
- - - 內迴圈 - - - 第 6 次
- - - 內迴圈 - - - 第 7 次
- - - 內迴圈 - - - 第 8 次
---外迴圈---第 3 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
- - - 內迴圈 - - - 第 3 次
- - - 內迴圈 - - - 第 4 次
- - - 內迴圈 - - - 第 5 次
- - - 內迴圈 - - - 第 6 次
- - - 內迴圈 - - - 第 7 次
---外迴圈---第 4 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
- - - 內迴圈 - - - 第 3 次
- - - 內迴圈 - - - 第 4 次
- - - 內迴圈 - - - 第 5 次
- - - 內迴圈 - - - 第 6 次
---外迴圈---第 5 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
- - - 內迴圈 - - - 第 3 次
- - - 內迴圈 - - - 第 4 次
- - - 內迴圈 - - - 第 5 次
---外迴圈---第 6 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
- - - 內迴圈 - - - 第 3 次
- - - 內迴圈 - - - 第 4 次
---外迴圈---第 7 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
- - - 內迴圈 - - - 第 3 次
---外迴圈---第 8 次
- - - 內迴圈 - - - 第 1 次
- - - 內迴圈 - - - 第 2 次
---外迴圈---第 9 次
- - - 內迴圈 - - - 第 1 次
外迴圈迴圈九次,內迴圈迴圈9+8+7+6+....+1次