0%

PHP 算法 —— 冒泡算法及其优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$arr = array(1,30,5,8,2,7,12);
$cou = count($arr);

// 常见算法,比较大小,两个数字,如果大或者小那么交换位置。
for($i=0;$i<$cou;$i++){
for($j=$i+1;$j<$cou;$j++){
echo $i.' ',$j.' ',$arr[$i].' ',$arr[$j].' ','<br/>';
if($arr[$i] > $arr[$j]){
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
$bool = true;
}
}
}
// 优化算法,增加一个flag,如果发生了交换就退出子循环。
for($i=0;$i<$cou;$i++){
$bool = false;

for($j=$i+1;$j<$cou;$j++){
echo $i.' ',$j.' ',$arr[$i].' ',$arr[$j].' ','<br/>';
if($arr[$i] > $arr[$j]){
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
$bool = true;
}
if($bool == false){break;}
}
}

欢迎关注我的其它发布渠道