在要排序的一组数中,对当前还未排好的序列,

从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。

即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

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
$arr = [1, 43, 54, 62, 21, 66, 32, 78, 36, 76, 39];

function bubble_sort($arr)
{
$len = count($arr);
//该层循环控制 需要冒泡的轮数
for($i = 0; $i < $len - 1; $i++) {
//该层循环用来控制每轮 冒出一个数 需要比较的次数
for($k = 0; $k < $len- $i - 1; $k++) {
// 下一个键
$nk = $k + 1;
// 如果当前值比下一个值大
if($arr[$k] > $arr[$nk]) {
// 把下一个值先存起来
$tmp = $arr[$nk];
// 把当前值给下一个键,覆盖
$arr[$nk] = $arr[$k];
// 再把存起来的值,给当前键
$arr[$k] = $tmp;
}
}
}

return $arr;
}