php冒泡排序是什么

PHP冒泡排序是通过嵌套循环两两比较相邻元素并交换位置,使最大值逐轮“冒泡”至末尾的O(n²)基础算法,适用于教学理解而非实际大数据排序。

PHP冒泡排序是一种基础的排序算法,它通过重复遍历要排序的数组,比较相邻两个元素的大小,如果顺序错误(比如升序时前一个比后一个大),就交换它们的位置。每一轮遍历都会把当前未排序部分的最大值“冒泡”到末尾,因此得名。

冒泡排序的核心逻辑

它的本质是两两比较、逐步调整:从第一个元素开始,依次比较相邻两项;一趟走完,最大的数就“沉”到了最后;下一轮不再管最后一个数,继续对前面的数重复这个过程,直到整个数组有序。

时间复杂度是 O(n²),适合小数据量或教学理解,不适合大数据排序。

PHP中怎么写冒泡排序

用纯PHP实现,不需要额外函数,靠嵌套 for 循环就能完成:

php
function bubbleSort($arr) {
  $n = count($arr);
  for ($i = 0; $i     for ($j = 0; $j       if ($arr[$j] > $arr[$j + 1]) {
        $temp = $arr[$j];
        $arr[$j] = $arr[$j + 1];
        $arr[$j + 1] = $temp;
      }
    }
  }
  return $arr;
}

$data = [64, 34, 25, 12, 22, 11, 90];
print_r(bubbleSort($data));
?>

可以优化的几个点

  • 加入提前退出机制:如果某轮没有发生任何交换,说明已经排好序,可直接结束循环
  • 注意键名丢失:上面例子返回的是新数组,原数组索引会重排;如需保留关联键,得改用 foreach + 引用或自定义逻辑
  • 升序/降序只需改比较符号:>

和PHP内置排序对比

PHP有 sort()asort()usort() 等高效排序函数,底层是快排或归并,性能远超冒泡。写冒泡不是为了实用,而是为了理解排序思想、锻炼逻辑、应付面试或教学演示。

基本上就这些。理解了怎么“冒”,再看其他排序算法就容易多了。