经典排序算法 - 冒泡排序Bubble sort
2016-02-19 15:01
204 查看
</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; }
相关文章推荐
- selenium 学习笔记 ---新手学习记录(5) 问题总结(java)
- C语言基础问题二三
- 9 款你必须知道的 Material Design 调色板
- .NET Memeroy Profile 优化C#程序实战笔记
- Python中range()函数的使用方法总结
- 无聊时总结总结算法之09基数排序
- 提高第三方app的service优先级
- gcc结构体对齐的误用
- gets、puts、fgets、fputs
- CentOS6.4 配置iptables
- Microsoft Remote Tools
- 实时获取输入框字数(移动端)
- Intent
- Hibernate一级缓存
- [从头学数学] 第96节 扇形统计图
- 百度地图定位
- Modernizr——为HTML5和CSS3而生!
- android canvas save 和 restore 用法
- 大型网站图片服务器架构的演进
- java 延迟阻塞队列详解