首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用PHP实现冒泡排序(从小到大)

用PHP实现冒泡排序(从小到大)

原创
作者头像
用户7108768
修改2021-09-24 10:33:31
修改2021-09-24 10:33:31
6360
举报
代码语言:javascript
复制
<?PHP
    //数组元素值从小到大排序
    $arr=array(1,42,0,3,15,7,19,26);
    //定义一个中间变量
    $temp=0;
    //外层循环的次数
    for($i=0;$i<count($arr)-1;$i++){
        //内层之间向右相邻的两个数组元素值进行比较
        for($j=0;$j<count($arr)-1-$i;$j++){
            //当后一个数组元素值大于前一个数组原数值
            if($arr[$j]>$arr[$j+1]){
            //数组元素交换
               $temp=$arr[$j];
               $arr[$j]=$arr[$j+1];
               $arr[$j+1]=$temp;
              }
           }
        //外层数组循环的次数是---count($arr)-1
        //-1的原因(数组元素值比较时是两个比较
        //如3个数组元素比较2次
        echo "这是第".($i+1)."次比较的结果";
        echo "<pre/>";
        print_r($arr);
        echo "<pre/>";
       }
    echo "<hr color=red />";
    echo "<pre/>";
    print_r($arr);
    echo "<pre/>";    
?>

 

改进代码: 添加一个布尔变量 $exchange, 以监视每($i+1)次冒泡排序是否发生过相邻元素交换的情况。如果有($exchange为true),则需继续进行下一次冒泡排序。如果没有发生过相邻元素交换的情况,则说明排序任务已经完成,无需进行下一次冒泡排序。这时,使用 break,立刻跳出 $i 循环体。 

事实表明,使用改进过的代码,第3次比较的结果就完成了任务。立刻用 break 使程序终止。

原来需要在第7次比较的结果才结束。

代码语言:javascript
复制
<meta charset="gb2312" />
<?PHP
    //数组元素值从小到大排序
    $arr=array(1,42,0,3,15,7,19,26);
    //定义一个中间变量
    $temp=0;
    //外层循环的次数
    for($i=0;$i<count($arr)-1;$i++){
		$exchange=false;
        //内层之间向右相邻的两个数组元素值进行比较
        for($j=0;$j<count($arr)-1-$i;$j++){
            //当后一个数组元素值大于前一个数组原数值
            if($arr[$j]>$arr[$j+1]){
            //数组元素交换
               $temp=$arr[$j];
               $arr[$j]=$arr[$j+1];
               $arr[$j+1]=$temp;
			   $exchange=true;
              }

           }
        //外层数组循环的次数是---count($arr)-1
        //-1的原因(数组元素值比较时是两个比较
        //如3个数组元素比较2次
        echo "这是第".($i+1)."次比较的结果";
        echo "<pre/>";
        print_r($arr);
        echo "<pre/>";
		if (!$exchange) 
		break;
       }
    echo "<hr color=red />";
    echo "<pre/>";
    print_r($arr);
    echo "<pre/>";    
?>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档