<?php
$a = ['11','2','13','4','22'];
$n = count($a);
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $n; $j++) {
if ($a[$i] < $a[$j]) { // 升序:前者小於後者則交換
$tmp = $a[$i];
$a[$i] = $a[$j];
$a[$j] = $tmp;
}
}
}
print_r($a);
// 輸出: Array ( [0] => 2 [1] => 4 [2] => 11 [3] => 13 [4] => 22 )
?>
<?php
function bubbleSort(&$arr) {
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
$swapped = false;
// 最後 i 個元素已就位
for ($j = 0; $j < $n - 1 - $i; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
[$arr[$j], $arr[$j + 1]] = [$arr[$j + 1], $arr[$j]]; // PHP 7.1+ 解構交換
$swapped = true;
}
}
if (!$swapped) break; // 本輪無交換,已有序
}
}
?>
| 特性 | sort() | 冒泡排序 |
|---|---|---|
| 實現 | C 級 Quicksort/合併排序混合 | PHP 級雙重迴圈 |
| 速度 | 極快 (O(n log n)) | 極慢 (O(n²)) |
| 穩定性 | 不穩定 | 穩定 |
| 適用場景 | 生產環境所有排序 | 教學、極小數據、特定約束 |
冒泡排序僅供**算法學習、面試、極小規模數據(<50)**使用。生產代碼**務必使用內置 sort()/usort()/asort() 等**,性能差距達數量級。