代码改变世界

php 冒泡排序

2017-02-15 13:48  Caoxt  阅读(200)  评论(0编辑  收藏  举报

     冒泡排序是一种交换排序,它的基本思想是两两比较相邻记录的关键字,如果反序则交换,直到没有反序为止。下边的代码严格意义上说不属于冒泡排序算法,因为它不满足“两两比较相邻记录“的冒泡排序思想。

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);

  上边的算法可以再做优化,这里不再详述。