再来分析一个案例:对 3,2,1 冒泡排序 ?
第一轮 : 3 2 1
3 2 -> 2 3 -> 2 3 1
3 1 -> 1 3 -> 2 1 3 // 确定了最大数3
第二轮 : 2 1 【3】
2 1 -> 1 2 -> 1 2 3 // 确定了第二大数2
可以看到,每一轮,就会确定一个最大数。
php的代码实现:
public function maoPaoSort() {
$arr = [38, 49, 27, 27, 27 ,27 ,27, 27];
$n = count($arr); // 3
for ($i = 0; $i < $n - 1; $i++) { // i 会有 0 和 1
for ($j = 0; $j < ($n-1-$i); $j++) { // 当i为0时,j有 0, 1 ; 当i为1时,j有0
if ($arr[$j] > $arr[$j+1]) {
list($arr[$j], $arr[$j+1]) = [$arr[$j+1], $arr[$j]];
}
}
}
return $arr;
}