php冒泡排序法对于处理有些数据还是有很大帮助,这里简单说明一下:
原理:对待排序记录关键词从后往前逆序进行多变扫描,当发现相邻两个关键词的次序与要求规则不符时,就将这两条记录进行交换,这样的话,关键词较小的将逐渐从后往前移动,就像气泡在水中向上浮起一样,这种算法被称为冒泡(气泡)排序法。
<?php
function bubble_sort($arr)
{
for($i=0; $i<count($arr) - 1; $i++){
for($j=0; $j<count($arr) - 1; $j++){
if($arr[$j] > $arr[$j+1]){
//需要一个变量来传值用
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
return $arr;
}
$arr = array(10,1,102,34,76,342,3213,0,0.5,-1);
print_r(bubble_sort($arr));
?>
<?php
function bubble_sort($arr, $order="desc"){
for($i = 0; $i < count($arr) - 1; $i++){
for($j = 0; $j < count($arr) - 1; $j++){
if ($order == "desc") {
if ($arr[$j] < $arr[$j + 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
} elseif ($order == "asc") {
if ($arr[$j] > $arr[$j + 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
}
return $arr;
}
$brr = array(1,9,2,8,6,4,3,7,5);
print_r(bubble_sort($brr, "desc"));
输出结果: