基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。
<?php
function bubble_sort($arr = [])
{
$arr_len = count($arr);
for ($i = 0; $i < ($arr_len - 1); $i++) {
$flag = false;
for ($j = ($arr_len - 1); $j > $i ; $j--) { // $j < ($arr_len - $i); #让较大的数“下沉”不再比较
if($arr[$j-1] > $arr[$j]){ // 如果前一个比后一个大则交换位置
$tmp = $arr[$j-1];
$arr[$j-1] = $arr[$j];
$arr[$j] = $tmp;
$flag = true;
}
}
if (empty($flag)) {
return $arr;
}
}
}
$arr = [2,13,1,5,99,234,23];
$arr = [3,34,443,123,2,1,543,534234,19,234,9434];
$arr = bubble_sort($arr);
print_r($arr);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 19
[4] => 34
[5] => 123
[6] => 234
[7] => 443
[8] => 543
[9] => 9434
[10] => 534234
)