1. 程式人生 > >PHP內功之排序__1.氣泡排序

PHP內功之排序__1.氣泡排序

氣泡排序

好記性,不如爛筆頭

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. - - - 內迴圈 - - - 第 1 次
  3. - - - 內迴圈 - - - 第 2 次
  4. - - - 內迴圈 - - - 第 3 次
  5. - - - 內迴圈 - - - 第 4 次
  6. - - - 內迴圈 - - - 第 5 次
  7. - - - 內迴圈 - - - 第 6 次
  8. - - - 內迴圈 - - - 第 7 次
  9. - - - 內迴圈 - - - 第 8 次
  10. - - - 內迴圈 - - - 第 9 次
  11. ---外迴圈---第 2 次
  12. - - - 內迴圈 - - - 第 1 次
  13. - - - 內迴圈 - - - 第 2 次
  14. - - - 內迴圈 - - - 第 3 次
  15. - - - 內迴圈 - - - 第 4 次
  16. - - - 內迴圈 - - - 第 5 次
  17. - - - 內迴圈 - - - 第 6 次
  18. - - - 內迴圈 - - - 第 7 次
  19. - - - 內迴圈 - - - 第 8 次
  20. ---外迴圈---第 3 次
  21. - - - 內迴圈 - - - 第 1 次
  22. - - - 內迴圈 - - - 第 2 次
  23. - - - 內迴圈 - - - 第 3 次
  24. - - - 內迴圈 - - - 第 4 次
  25. - - - 內迴圈 - - - 第 5 次
  26. - - - 內迴圈 - - - 第 6 次
  27. - - - 內迴圈 - - - 第 7 次
  28. ---外迴圈---第 4 次
  29. - - - 內迴圈 - - - 第 1 次
  30. - - - 內迴圈 - - - 第 2 次
  31. - - - 內迴圈 - - - 第 3 次
  32. - - - 內迴圈 - - - 第 4 次
  33. - - - 內迴圈 - - - 第 5 次
  34. - - - 內迴圈 - - - 第 6 次
  35. ---外迴圈---第 5 次
  36. - - - 內迴圈 - - - 第 1 次
  37. - - - 內迴圈 - - - 第 2 次
  38. - - - 內迴圈 - - - 第 3 次
  39. - - - 內迴圈 - - - 第 4 次
  40. - - - 內迴圈 - - - 第 5 次
  41. ---外迴圈---第 6 次
  42. - - - 內迴圈 - - - 第 1 次
  43. - - - 內迴圈 - - - 第 2 次
  44. - - - 內迴圈 - - - 第 3 次
  45. - - - 內迴圈 - - - 第 4 次
  46. ---外迴圈---第 7 次
  47. - - - 內迴圈 - - - 第 1 次
  48. - - - 內迴圈 - - - 第 2 次
  49. - - - 內迴圈 - - - 第 3 次
  50. ---外迴圈---第 8 次
  51. - - - 內迴圈 - - - 第 1 次
  52. - - - 內迴圈 - - - 第 2 次
  53. ---外迴圈---第 9 次
  54. - - - 內迴圈 - - - 第 1 次

外迴圈迴圈九次,內迴圈迴圈9+8+7+6+....+1次