PHP冒泡排序算法

冒泡排序算法是一个经典的常用排序算法,当然还有一些其他的常用排序算,比如选择排序,插入排序,希尔排序,快速排序。所以也是一种必学的算法,甚至很多公司面试的题目中也有冒泡排序的。

但是冒泡排序毕竟是一种效率低下的排序方法,在数据规模很小时,可以采用。数据规模比较大时,最好用其它排序方法。


冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面,直到达到升序排列。

比如:这个数组array(4,3,5,1,2)用冒泡排序算法进行升序排列。

第1个循环循环开始,当前排序4,3,5,1,2

第1趟:比较第1个和第2个数,比较4和3,排列后:3,4,5,1,2

第2趟:比较第2个和第3个数,比较4和5,排列后:3,4,5,1,2

第3趟:比较第3个和第4个数,比较5和1,排列后:3,4,1,5,2

第4趟:比较第4个和第5个数,比较5和2,排列后:3,4,1,2,5

至此第1个循环结束;由于最后一个数字5是最大的,所以只要排序前4位。

第2个循环循环开始,当前排序3,4,1,2

第1趟:比较第1个和第2个数,比较3和4,排列后:3,4,1,2

第2趟:比较第2个和第3个数,比较4和1,排列后:3,1,4,2

第3趟:比较第3个和第4个数,比较4和2,排列后:3,1,2,4

至此第2个循环结束;由于最后一个数字4是最大的,所以只要排序前3位。

第3个循环循环开始,当前排序3,1,2,

第1趟:比较第1个和第2个数,比较3和4,排列后:1,3,2

第2趟:比较第2个和第3个数,比较4和1,排列后:1,2,3

至此第3个循环结束;由于最后一个数字3是最大的,所以只要排序前2位。

第4个循环循环开始,当前排序:1,2

第1趟:比较第1个和第2个数,比较3和4,排列后:1,2

至此第4个循环结束;到此排序已经全部升序。

由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

以下就是PHP中的冒泡排序中的一种:

<?php
$a = array(4,3,5,1,2); //这里随便创建一个一维数组;
$n = count($a);     //算出数组的元素总个数;
for($i=0;$i<$n-1;$i++){//需要进行的循环次数
for ($j=0;$j<$n-1-$i;$j++){//每次循环的比较次数
if($a[$j]>$a[$j+1]){ //比较数的大小,数小提前,数大排后
$tmp=$a[$j+1]; 
$a[$j+1]=$a[$j]; 
$a[$j]=$tmp;
}
}
}
print_r($a); //输出排列好的数组
?>

目前有 0 条评论

昵称
邮箱
主页
提交
订阅