冒泡排序

說來慚愧,幹了4年的程序員居然連冒泡排序也講不清楚。

精通算法的老鳥請繞道,這篇文章就當給入門的兄弟,和我自己做做算法入門普及。

 

 

冒泡排序

這個名字很形象,把整個算法弄懂就像是水裏的泡泡。它的算法複雜度是O(n2 )級的。

舉個例子,有一個數組:

PHP      $array = array("49","38","65","97","76","13","27");

 

現在,我要把它按照從小到大的順序排列。希望的結果就像:

 

$array = array("13","27","38","49","65","76","97");

 

OK,冒泡開始。先讓最輕的泡泡(最小的數),浮到水面。具體算法可以是對每2個元素進行比較,如果後面一個比前面一個小,則兩個元素替換位置。

 

PHP:

for($i=count($array);$i>0;$i--){

     if($array[$i-1] > $array[$i]){

         $temp = $array[$i];

         $array[$i] = $array[$i-1]

         $array[$i-1] = $temp;

     }

}

 

看看排後的結果:   $array = array("13","49","38","65","97","76","27");

 

看看,最小的數13已經排到了第一位。

 

剩下的我們就要把次小數,即27排到第二位。

 

算法,php:

 

for($i = count($array)-1;$i>0;$i--){

    類似....

}

 

結果:  $array = array("13","27","49","38","65","97","76");

 

然後重複,次次小數,次次次小數....重複重複再重複,排序搞定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章