冒泡排序是适合新手理解的排序算法,核心为相邻比较、大数后移;提供基础版(5行)、函数封装版及优化版(提前结束),含php实现、注释与避坑提示。

冒泡排序是最适合新手理解的排序算法之一,核心思想是“相邻比较、大数后移”。下面给出真正最简、可直接运行的 PHP 实现,不含冗余逻辑,带关键注释:
基础版(5行搞定)
适用于已知数组长度、只排一次的练习场景:
$arr = [64, 34, 25, 12, 22, 11, 90];
for ($i = 0; $i $arr[$j + 1]) {
list($arr[$j], $arr[$j + 1]) = [$arr[$j + 1], $arr[$j]];
}
}
}
print_r($arr); // 输出升序结果
函数封装版(推荐日常使用)
把逻辑抽成函数,支持任意数组,更清晰、可复用:
function bubbleSort($arr) {
$n = count($arr);
for ($i = 0; $i $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
$result = bubbleSort([5, 2, 8, 1]);
print_r($result);
优化点:提前结束(避免无效循环)
如果某轮没发生交换,说明已有序,可立即退出:
- 加一个 $swapped 标志位,每轮开始设为 false
- 只要发生交换就设为 true
- 内层循环结束后检查,若仍为 false,用 break 跳出外层
注意这几点,少踩坑
- PHP 数组下标从 0 开始,内层循环上限必须是 count($arr) - 1 - $i,否则越界
- list() = [] 是 PHP 7+ 的简洁交换写法;低版本请用临时变量
- 默认排升序,改 > 为 即可变降序
- 冒泡时间复杂度是 O(n²),仅适合小数据或教学,生产环境别用
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











