PHP冒泡排序算法实现

我们假设将要被排序的数组$array具有如下初始值:

$array = [34,23,4,7,13,43,6,12,56,2];

我们按照从小到大的顺序来排列,实现后的数组:

Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 7 [4] => 12 [5] => 13 [6] => 23 [7] => 34 [8] => 43 [9] => 56 )

如果有N个元素,我们就要进行N-1趟比较,每次将最大的放在后面。这儿数组有10个元素,所以我们要进行9趟比较:

$length = count($array);

for($i = 0,$len = $length - 1;$i < $len;$i++){
   
}

外层循环进行9次比较,每次我们将从元素的第一个和该元素下一个进行比较,每次比较次数是N-该趟次数,比如进行了第5趟比较了,我们只需要对9-5=4次比较,因为后面的元素已经比较排序好了:

for($i = 0,$len = $length - 1;$i < $len;$i++){
    for($j = 0;$j < $len - $i; $j++){

    }
}

每趟的每一次比较,我们将二者教大的往后移:

$array = [34,23,4,7,13,43,6,12,56,2];
$length = count($array);
for($i = 0,$len = $length - 1;$i < $len;$i++){
    for($j = 0;$j < $len - $i; $j++){
        if($array[$j] > $array[$j + 1]){
            $temp = $array[$j];
            $array[$j] = $array[$j + 1];
            $array[$j + 1] = $temp;
        }
    }
}

最后就得到了排序结果:

Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 7 [4] => 12 [5] => 13 [6] => 23 [7] => 34 [8] => 43 [9] => 56 )

 

posted @ 2016-07-08 17:16  CB蜡笔小新  阅读(112)  评论(0)    收藏  举报