首先簡述冒泡的原理:很簡單,就是兩兩比較,小的放在前面,大的放在后面。
冒泡排序(這個排序是我看的別人的)(從小到大):
$array = array(1,56,2,89,3,456,789,2,6,4,7809,456,13,3); function bubble_sort($array){ $len = count($array); if($len<=0){ return false; } for($i=0;$i<$len;$i++){ for($j=$i+1;$j<$len;$j++){ if($array[$i] > $array[$j]){ $temp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $temp; } } } return $array; } print_r(bubble_sort($array));
自己想的冒泡(從小到大):
function bubble_sort($array){ $len = count($array); if($len<=0){ return false; } foreach($array as $k=>&$y){ foreach($array as $j=>&$x){ if($j>$k){ if($y > $x){ $temp = $y; $y = $x; $x = $temp; } } } } return $array; } print_r(bubble_sort($array));
然后我發現這樣也行,只不過效率沒有上面的高(從小到大):
function bubble_sort($array){ $len = count($array); if($len<=0){ return false; } foreach($array as $k=>&$y){ foreach($array as $j=>&$x){ if($y < $x){ $temp = $y; $y = $x; $x = $temp; } } } return $array; } print_r(bubble_sort($array));
類似上面這種做法,數組元素少看不出區別,但是一旦數組元素為海量,那就能看出區別了。所以不推薦。
