经典排序算法 - 冒泡排序Bubble sort

</pre><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">经典排序算法 - 冒泡排序Bubble sort</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">这样一趟过去后,最大或最小的数字被交换到了最后一位,</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">例子为从小到大排序,</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">原始待排序数组<span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 6 | 2 | 4 | 1 | 5 | 9 |</span></p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第一趟排序(外循环)</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第一次两两比较6 > 2交换(内循环)</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态<span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 6 | 2 |</span> 4 | 1 | 5 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态<span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 2 | 6 |</span> 4 | 1 | 5 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第二次两两比较,6 > 4交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态| 2 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 6 | 4 |</span> 1 | 5 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态| 2 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 4 | 6 |</span> 1 | 5 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第三次两两比较,6 > 1交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态| 2 | 4 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 6 | 1 |</span> 5 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态| 2 | 4 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 1 | 6 |</span> 5 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第四次两两比较,6 > 5交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态| 2 | 4 | 1 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 6 | 5 |</span> 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态| 2 | 4 | 1 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 5 | 6 |</span> 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第五次两两比较,6 < 9不交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态| 2 | 4 | 1 | 5 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 6 | 9 |</span></p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态| 2 | 4 | 1 | 5 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 6 | 9 |</span></p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第二趟排序(外循环)</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第一次两两比较2 < 4不交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态<span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 2 | 4 |</span> 1 | 5 | 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态<span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 2 | 4 |</span> 1 | 5 | 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第二次两两比较,4 > 1交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态| 2 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 4 | 1 |</span> 5 | 6 | 9 | <br style="margin:0px; padding:0px" />交换后状态| 2 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 1 | 4 |</span> 5 | 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第三次两两比较,4 < 5不交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态| 2 | 1 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 4 | 5 |</span> 6 | 9 | <br style="margin:0px; padding:0px" />交换后状态| 2 | 1 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 4 | 5 |</span> 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第四次两两比较,5 < 6不交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换前状态| 2 | 1 | 4 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 5 | 6 |</span> 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态| 2 | 1 | 4 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 5 | 6 |</span> 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第三趟排序(外循环)</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第一次两两比较2 > 1交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态<span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 2 | 1 |</span> 4 | 5 | 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态<span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 1 | 2 |</span> 4 | 5 | 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第二次两两比较,2 < 4不交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态| 1 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 2 | 4 |</span> 5 | 6 | 9 | <br style="margin:0px; padding:0px" />交换后状态| 1 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 2 | 4 |</span> 5 | 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第三次两两比较,4 < 5不交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">交换后状态| 1 | 2 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 4 | 5 |</span> 6 | 9 | <br style="margin:0px; padding:0px" />交换后状态| 1 | 2 <span style="margin:0px; padding:0px; line-height:1.5; text-decoration:underline">| 4 | 5 |</span> 6 | 9 |</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第四趟排序(外循环)无交换</p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19.5px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)">第五趟排序(外循环)无交换</p><div>贴上自己写的代码:<pre code_snippet_id="1582433" snippet_file_name="blog_20160219_2_1415990" name="code" class="html">function bubble_sort($arr=array(1,43,54,62,21,66,32,78,36,76,39))
{  
    $len = count($arr);
    //该层循环控制 需要冒泡的轮数
    for($i=1; $i<$len; $i++)
    { //该层循环用来控制每轮 冒出一个数 需要比较的次数
        for($k=0; $k<$len-$i; $k++)
        {
           if($arr[$k] > $arr[$k+1])
            {
                $tmp = $arr[$k+1];
                $arr[$k+1] = $arr[$k];
                $arr[$k] = $tmp;
                @$arr['cly_times'] +=1; //设置循环结束
            }
        }
        if ($arr['cly_times'] == $arr['cly_times']-1) {
        	return $arr;
        }
    }
    return $arr;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值