冒泡排序法理解

核心技术: 值对换, 多重循环

说明: 循环比对值的大小, 如果第一个值比第二个值大就进行对换.
第一次循环得到第一大的值
每二次循环得到第二大的值

直到只剩一个值后结束循环

注意点: 这里使用了递增递减两种循环. 所以对循环的掌握要求比较高. 要不然很容易出现排序完成后 数组出现一个多余的 空值.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

$arr = array(5,2,7,9,10,3);

function mp($arr) {
$count = count($arr) - 1; // 5 因为下面第二个循环中的对比值

// 因为第一次循环会得到最大的值, 第二次就得到第二个最大值. 所以使用 递减的方法.
for ($i = $count; $i > 0; $i--) {
for ($j = 0; $j < $i; $j++) {
// 前后对比对换
if ($arr[$j] > $arr[($j+1)]) {
$big = $arr[$j];
$arr[$j] = $arr[($j+1)];
$arr[($j+1)] = $big;
}
}
}
}

$arr = mp($arr);
print_r($arr);