PHP算法题:用冒泡法对数组进行排序

用冒泡法对下列数组进行排序:

$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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值