php 实现冒泡循环
冒泡排序的实现原理
冒泡排序是一种简单的排序算法,通过重复遍历待排序列表,比较相邻元素并交换顺序错误的元素。每次遍历会将当前未排序部分的最大(或最小)元素“冒泡”到正确位置。
PHP 实现冒泡排序的代码
function bubbleSort($array) {
$length = count($array);
for ($i = 0; $i < $length - 1; $i++) {
for ($j = 0; $j < $length - $i - 1; $j++) {
if ($array[$j] > $array[$j + 1]) {
// 交换相邻元素
$temp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $temp;
}
}
}
return $array;
}
代码优化版本
增加标志位减少不必要的遍历,当某次遍历未发生交换时说明已排序完成:

function optimizedBubbleSort($array) {
$length = count($array);
for ($i = 0; $i < $length - 1; $i++) {
$swapped = false;
for ($j = 0; $j < $length - $i - 1; $j++) {
if ($array[$j] > $array[$j + 1]) {
$temp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $temp;
$swapped = true;
}
}
if (!$swapped) break;
}
return $array;
}
使用示例
$unsortedArray = [64, 34, 25, 12, 22, 11, 90];
$sortedArray = bubbleSort($unsortedArray);
print_r($sortedArray);
// 输出结果:Array ( [0] => 11 [1] => 12 [2] => 22 [3] => 25 [4] => 34 [5] => 64 [6] => 90 )
时间复杂度分析
- 最坏情况时间复杂度:O(n²)(当数组是逆序时)
- 最好情况时间复杂度:O(n)(当数组已经有序且使用优化版本时)
- 平均时间复杂度:O(n²)
适用场景
适用于小规模数据排序或教学演示,实际项目中对于大规模数据建议使用更高效的排序算法如快速排序或归并排序。






