您的位置:首页 > 其它

经典排序算法 - 冒泡排序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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: