思路分析:循环逐个对比,从第一个开始,与下一个数字进行对比,若大于则交换位置,每循环一遍将最大的一个排到最后。(依次比较相邻的元素,两两比较,就可以最终将最大(小)的元素调整到最顶端、次顶端、、、)
$arr = array(3,2,5,6,1,8,4,9);
function bubble_sort($arr){
$len=count($arr);
//判断数组是否为空
if($len<=0){
echo '数组不能为空';
exit;
}
for($j=0;$j<$len-1;$j++){
$tmp=false;
//该层循环用来控制每轮,终将最大(小)的元素调整到最末,并设置标志位,发生变动,就置为true,
for($i=0;$i<$len-1-$j;$i++){
$temp=$arr[$i];
if($arr[$i]>$arr[$i+1]){
$tmp=true;
$arr[$i]=$arr[$i+1];
$arr[$i+1]=$temp;
}
}
//如果标志位没有变动,说明,已经排序完毕,结束循环
if($tmp==false){
break;
}
}
return $arr;
}
var_dump(bubble_sort($arr));