數據結構和演算法——冒泡排序

  • 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  )  */