冒泡排序是最基礎的排序演算法之一,核心思想是「兩兩比較相鄰元素,若順序錯誤則交換,直到無反序為止」。雖然 PHP 內建 sort()、asort() 等高效排序函式,但理解冒泡排序有助於掌握演算法基礎思維。
相鄰元素兩兩比較,前者大於後者則交換位置。每輪遍歷會將最大(或最小)元素「冒泡」到陣列末端。透過旗標優化,若某輪無交換發生,代表已排序完成,可提前結束。
<?php
$bub = array(9,5,8,3,4,6,1,2,7);
$sortarr = $asortarr = $bub;
// 冒泡排序(優化版)
$flag = true;
for ($i = 0; $i < count($bub) - 1 && $flag; $i++) {
$flag = false;
for ($j = count($bub) - 2; $j >= $i; $j--) {
if ($bub[$j] > $bub[$j+1]) {
$temp = $bub[$j];
$bub[$j] = $bub[$j+1];
$bub[$j+1] = $temp;
$flag = true;
}
}
}
// PHP 內建函式對照
sort($sortarr); // 重新索引排序
asort($asortarr); // 保持鍵值關係排序
echo '冒泡:<pre>';
var_dump($bub);
echo 'sort:<pre>';
var_dump($sortarr);
echo 'asort:<pre>';
var_dump($asortarr);
?>

實務開發中應優先使用 PHP 內建排序函式,它們基於快速排序等高效演算法實作,效能遠優於冒泡排序。