PHP的氣泡排序及改進
阿新 • • 發佈:2018-12-17
<?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));