看到的一些代码片段
PHP 实现冒泡排序 - 从小到大排序
<?php
// 数组元素值从小到大排序
$arr = [1, 42, 0, 3, 15, 7, 26, 19, 25, 23];
// 定义一个中间变量
$temp = 0;
// 外层循环的次数
for ($i = 0; $i < count($arr) - 1; $i++) {
$exchange = false;
// 内层之间向右相邻的两个数组元素值进行比较
for ($j = 0; $j < count($arr) - 1 - $i; $j++) {
// 当后一个数组元素值大于前一个数组元素值
if ($arr[$j] > $arr[$j + 1]) {
// 数组元素交换
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
$exchange = true;
}
}
// 外层数组循环的次数是 count($arr)-1
// -1的原因 数组元素值比较时是两个比较 如 3 个数组元素比较 2 次
echo '这是第' . ($i+1) . '次比较的结果';
echo '<pre>';
print_r($arr);
if (!$exchange)
break;
}
echo '<hr color="red" />';
print_r($arr);
tips:添加一个布尔变量 $exchange, 以监视每($i+1)次冒泡排序是否发生过相邻元素交换的情况。如果有($exchange为true),则需继续进行下一次冒泡排序。如果没有发生过相邻元素交换的情况,则说明排序任务已经完成,无需进行下一次冒泡排序。这时,使用 break,立刻跳出 $i 循环体