php实现冒泡排序
冒泡排序原理
冒泡排序是一种简单的排序算法,通过重复遍历待排序的列表,比较相邻元素并交换位置,将较大(或较小)的元素逐步“冒泡”到列表末端。时间复杂度为 (O(n^2)),适合小规模数据排序。
PHP实现代码
function bubbleSort(array $arr): array {
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
for ($j = 0; $j < $n - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
// 交换相邻元素
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
// 示例调用
$array = [64, 34, 25, 12, 22, 11, 90];
$sortedArray = bubbleSort($array);
print_r($sortedArray);
代码说明
- 外层循环:控制排序轮数,共需 (n-1) 轮((n) 为数组长度)。
- 内层循环:每轮比较相邻元素,若前一个元素大于后一个元素,则交换位置。
- 优化点:可添加标志位检测某一轮是否无交换,提前终止排序(针对已有序数组)。
优化版本
function optimizedBubbleSort(array $arr): array {
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
$swapped = false;
for ($j = 0; $j < $n - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
$swapped = true;
}
}
if (!$swapped) break; // 本轮无交换,提前结束
}
return $arr;
}
输出结果
输入 [64, 34, 25, 12, 22, 11, 90] 时,输出为升序数组:

Array
(
[0] => 11
[1] => 12
[2] => 22
[3] => 25
[4] => 34
[5] => 64
[6] => 90
)






