首先简述冒泡的原理:很简单,就是两两比较,小的放在前面,大的放在后面。
冒泡排序(这个排序是我看的别人的)(从小到大):
$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));
类似上面这种做法,数组元素少看不出区别,但是一旦数组元素为海量,那就能看出区别了。所以不推荐。