冒泡排序思路分析:
法如其名,就是像冒泡一样,每次从数组当中冒一个最大的数出来。
比如:2,4,1 // 第一次 冒出的泡是4
2,1,4 // 第二次 冒出的泡是2
1,2,4 // 最后就变成这样
通过循环套循环
实现里面的循环比外面循环少一次
思路:相邻的俩数相比较,大的向后挪动一位
每次循环数组最后一位为最大值,每次循环冒出一个最大值
代码:
header('content-type:text/html;charset=utf8 ');
$arr = array(50, 2, 45, 12, 46, 47, 23, 40, 15, 60, 39, 67, 80, 34);
function maoPao($arr)
{
$len = count($arr);
// 设置一个空数组 用来接收冒出来的泡
// 该层循环控制 需要冒泡的轮数
for ($i = 1; $i < $len; $i++) {
// 该层循环用来控制每轮 冒出一个数 需要比较的次数
for ($k = 0; $k < $len - $i; $k++) {
if ($arr[$k] > $arr[$k + 1]) {
$tmp = $arr[$k + 1];
$arr[$k + 1] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
// 调用 打印数组
print_r(maoPao($arr));
数组打印结果为:
Array
(
[0] => 2
[1] => 12
[2] => 15
[3] => 23
[4] => 34
[5] => 39
[6] => 40
[7] => 45
[8] => 46
[9] => 47
[10] => 50
[11] => 60
[12] => 67
[13] => 80
)