冒泡排序是一种交换排序,它的基本思想是两两比较相邻记录的关键字,如果反序则交换,直到没有反序为止。下边的代码严格意义上说不属于冒泡排序算法,因为它不满足“两两比较相邻记录“的冒泡排序思想。
function bubble_sort($arr) {
for($i=0; $i<count($arr); $i++){
for($j=$i+1; $j<count($arr); $j++){
if($arr[$i] > $arr[$j]){
$new = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $new;
}
}
}
return $arr;
}
$arr = array('5', '3', '8', '9', '1', '0');
$sortarr = bubble_sort($arr);
print_r($sortarr);
下边来看正宗的冒泡算法,也是上边代码的改进。
function bubble_sort($arr) {
for($i=0; $i<count($arr); $i++){
for($j=count($arr)-1; $j>$i; $j--){
if($arr[$j-1] > $arr[$j]){
$new = $arr[$j-1];
$arr[$j-1] = $arr[$j];
$arr[$j] = $new;
}
}
}
return $arr;
}
$arr = array('5', '6', '8', '9', '1', '0');
$sortarr = bubble_sort($arr);
print_r($sortarr);
上边的算法可以再做优化,这里不再详述。