冒泡排序算法是一个经典的常用排序算法,当然还有一些其他的常用排序算,比如选择排序,插入排序,希尔排序,快速排序。所以也是一种必学的算法,甚至很多公司面试的题目中也有冒泡排序的。
但是冒泡排序毕竟是一种效率低下的排序方法,在数据规模很小时,可以采用。数据规模比较大时,最好用其它排序方法。
冒泡排序(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 条评论