用冒泡法对下列数组进行排序:
$arr = array(10,8,5,11,4,10,7,20,5,13,2);
**方案一:递归**
$num =0;
//将最大值放到后面
function maopao($arr){
global $num;
//结束递归
if(count($arr)==1) return $arr;
for($i=0;$i<count($arr)-1;$i++){
// echo $arr[$i].'--'.$arr[$i+1]."<br>";
if($arr[$i]>$arr[$i+1]){
//位置对调
$temp=$arr[$i];
$arr[$i]=$arr[$i+1];
$arr[$i+1]=$temp;
}
$num++;
}
$bigger = $arr[count($arr)-1];//保存最大值
unset($arr[count($arr)-1]);//销毁最后一个单元
$newarr = maopao($arr);
$newarr[]=$bigger;
return $newarr;
}
var_dump(maopao($arr));
echo $num;//递归次数
**方案二:for循环嵌套**
for($j=0;$j<count($arr)-1;$j++){
for($i=0;$i<count($arr)-1-$j;$i++){
if($arr[$i]>$arr[$i+1]){
//位置对调
$temp=$arr[$i];
$arr[$i]=$arr[$i+1];
$arr[$i+1]=$temp;
}
}
}
var_dump($arr);