首先简单描述一下冒泡排序的基本思想:假设有一个无序数列(一共有N个元素),我们取出第1个元素与第2个元素做比较,如果第1个元素大于第2个元素,那么就交换这两个元素的位置;然后第2个元素再与第3个元素做比较。。。。。。一直到比较第N-1个元素与第N个元素,这样经过一轮的比较之后就把最大的数排到了最后面;然后从头再来,一直到比较第N-2个元素与第N-1个元素(因为第N个元素已经在上一轮排好了)。。。。。。以此类推就把全部元素按照从小到大的顺序排好了。下面用php代码来实现整个过程:
<?php
function buddleSort($arr){
$count = count($arr);
if($count <= 1){
return $arr;
}
for($i = 0;$i < $count - 1;$i++){
for($j = 0;$j < $count - $i - 1;$j++){
if($arr[$j] > $arr[$j + 1]){
//互换位置
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
$arr = [1,-1,100,88,-200,33,10];
$arr = buddleSort($arr);
print_r($arr);
输出:Array ( [0] => -200 [1] => -1 [2] => 1 [3] => 10 [4] => 33 [5] => 88 [6] => 100 )