<?php
/**格式化打印**/ function pre($arr) { echo "<pre>"; print_r($arr); echo "</pre>"; }
/**冒泡排序方法1 * 依次先排好第一个位置,第二个位置..... **/ function bubblesort(&$arr) { $len=count($arr); for($i=0;$i<$len-1;$i++) { for ($j = $i+1;$j<$len;$j++) { if($arr[$i]>$arr[$j]){ $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; } } } return $arr; }
/**冒泡排序方法2 *先排好最后一个位置,再依次向前排序 **/ function bubblesort(&$arr) { $len=count($arr); for($i=0;$i<$len;$i++) { for ($j = 0;$j<$len-$i-1;$j++) { if($arr[$j]>$arr[$j+1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; }
/*冒泡排序的改进1*/ function bubblesort($arr) { $len=count($arr); $flag=true; for($i=0;($i<$len-1)&&($flag==true);$i++) { $flag = false; for ($j = $i + 1; $j < $len; $j++) { if ($arr[$i] > $arr[$j]) { $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; $flag = true; } } } return $arr; }
/*冒泡排序的改进2*/ function bubblesort($arr) { $len=count($arr); for($i=0;$i<$len-1;$i++) { $flag = false; for ($j = $i + 1; $j < $len; $j++) { if ($arr[$i] > $arr[$j]) { swap($arr[$i],$arr[$j]); //上面的交换都没调用swap函数,读者可自行调用。 $flag = true; } } if(!$flag) break; } return $arr; }
/*交换两个数*/ function swap(&$a,&$b){ $temp=$a; $a=$b; $b=$temp; } //测试数据 $arr=array(5,4,3,2,1); pre(bubblesort($arr));