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);

猜你喜欢

转载自blog.csdn.net/icodestechnology/article/details/87454835