php foreach实现冒泡
使用 PHP foreach 实现冒泡排序
冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换顺序错误的元素,直到整个数组有序。以下是使用 foreach 实现冒泡排序的方法:
基本实现
function bubbleSort($array) {
$length = count($array);
for ($i = 0; $i < $length; $i++) {
foreach ($array as $key => $value) {
if ($key < $length - 1 && $array[$key] > $array[$key + 1]) {
// 交换相邻元素
$temp = $array[$key];
$array[$key] = $array[$key + 1];
$array[$key + 1] = $temp;
}
}
}
return $array;
}
// 示例调用
$unsortedArray = [64, 34, 25, 12, 22, 11, 90];
$sortedArray = bubbleSort($unsortedArray);
print_r($sortedArray);
优化实现
通过添加标志位减少不必要的遍历次数,提高效率:
function optimizedBubbleSort($array) {
$length = count($array);
for ($i = 0; $i < $length; $i++) {
$swapped = false;
foreach ($array as $key => $value) {
if ($key < $length - 1 && $array[$key] > $array[$key + 1]) {
$temp = $array[$key];
$array[$key] = $array[$key + 1];
$array[$key + 1] = $temp;
$swapped = true;
}
}
if (!$swapped) {
break;
}
}
return $array;
}
// 示例调用
$unsortedArray = [64, 34, 25, 12, 22, 11, 90];
$sortedArray = optimizedBubbleSort($unsortedArray);
print_r($sortedArray);
关键点说明
- 外层循环控制遍历轮数,内层
foreach比较相邻元素。 - 每次遍历将当前最大的元素“冒泡”到数组末尾。
- 优化版本通过
$swapped标志提前终止排序,减少无效操作。
输出结果
排序后的数组为升序排列:
Array
(
[0] => 11
[1] => 12
[2] => 22
[3] => 25
[4] => 34
[5] => 64
[6] => 90
)






