氣泡排序筆記

zerocoder發表於2020-08-03

i 第一次迴圈找出最大的
第二次迴圈找出第二大
依次類推

j 迴圈相鄰兩個值比較

function bubbleSort($arr) {
    // 陣列個數
    $num = count($arr);
    // 是否有資料交換標誌
    $flag = true;
    for ($i = 0; $i < $num - 1 && $flag; ++$i) {
        $flag = false;
        for ($j = 0; $j < $num - $i - 1; ++$j) {
            if ($arr[$j] > $arr[$j+1]) {
                // 交換 $arr[j] 和 $arr[$j+1] 的位置
                list($arr[$j], $arr[$j+1]) = array($arr[$j+1], $arr[$j]);
                $flag = true;
            }
        }
    }
    return $arr;
}

$testArr = [12, 1, 3, 2, 42, 50, 22, 3];

$arr = bubbleSort($testArr);
print_r($arr);
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章