數據結構和演算法——冒泡排序
- 2019 年 11 月 24 日
- 筆記
1、要解決的問題
給定如下所示的數字列表,請按升序對它們進行排序。
$numbers = [21,25,100,98,89,77];
要求
- 對數字進行排序時,需要使用冒泡排序演算法。
- 用PHP實現該演算法
2、偽程式碼說明
冒泡排序通過一次比較兩個值來工作,並且成對配對。並且迭代直到所有元素都到位才結束。每次迭代後,至少有一個元素移到列表的末尾。下面是第一次迭代的說明:

描述冒泡排序的偽程式碼如下:
FOR each element of the list FOR each element of the list IF current element greater then next element swap the elements//如果當前的元素大於後一個元素,則交換位置 END IF END FOR END FOR
內層循環被認為是一次迭代,外層循環確保我們迭代足夠的時間來對列表充分進行排序。
3、PHP實現冒泡排序
要在PHP中實現冒泡排序,我們只需要兩層循環。請注意,兩層循環的終止是:列表的長度-1。這是為了防止訪問未索引的元素。
<?php $numbers = [21, 25, 100, 98, 89, 77]; $length = count($numbers) - 1 for ($i = 0; $i < $length; $i++) { for ($j = 0; $j < $length; $j++) { if ($numbers[$j] > $numbers[$j + 1]) { $tmp = $numbers[$j]; $numbers[$j] = $numbers[$j + 1]; $numbers[$j + 1] = $tmp; } } } print_r($numbers); // 輸出: /* Array ( [0] => 21 [1] => 25 [2] => 77 [3] => 89 [4] => 98 [5] => 100 ) */