冒泡排序法是一种很基础的排序方法,也是面试题中经常问到的一道题目.今天做了一下简单的分析,具体代码和思路如下。
1 $array = array(12,45,877,35,545,87,32,2,48,966,252); 2 3 function bubbling($arr){ 4 $length=count($arr); 5 for($i=0;$i<$length;$i++){ 6 //$length-$i-1:第一次循环$arr[0]除了不和自己比较外要和其他的$length-1个元素比较 7 //第一次循环后可以确定数组最后一个元素是最小的,所以可以不参与后面的比较,所以第二次循环 8 //$arr[1]除了不和自己比较外还不和最后的一个元素比较,所以比较$length-$i-1次 9 for($j=0;$j<$length-$i-1;$j++){ 10 //如果后面的元素比前面的元素大,就调换位置,需要借助中间变量$tmp 11 if($arr[$j]<$arr[$j+1]){ 12 $tmp=$arr[$j]; 13 $arr[$j]=$arr[$j+1]; 14 $arr[$j+1]=$tmp; 15 } 16 } 17 } 18 return $arr; 19 20 } 21 22 $list=bubbling($array); 23 var_dump($list);
排序后的结果为:array(11) { [0]=> int(966) [1]=> int(877) [2]=> int(545) [3]=> int(252) [4]=> int(87) [5]=> int(48) [6]=> int(45) [7]=> int(35) [8]=> int(32) [9]=> int(12) [10]=> int(2) }