《大話資料結構》中這樣介紹冒泡排序的基本思想:兩兩比較相鄰元素的關鍵字,如果反序則交換,直到沒有反序的記錄為止。也就是相鄰元素之間兩兩比較,如果前一個值大於後一個(或者前一個值小於後一個),則交換順序,所以這樣的話,最終的結果是從小到大(或者從大到小)的排序。
當然php有非常強大的排序函數,比如sort,asort等,所以也在運用php的時候也用不著自己寫排序函數,這裡只是用php實現下冒泡排序的思想。
1 <?php 2 include_once './header.php'; 3 4 $bub = array(9,5,8,3,4,6,1,2,7,); 5 $sortarr = $asortarr = $bub; 6 7 //冒泡排序 8 $flag = true; 9 for($i=0; $i<count($bub)-1 && $flag; $i++){ //當flag為false時,已經排序完成,後面不再迴圈10 11 $flag = false;12 for($j=count($bub)-2; $j>=$i; $j--){13 14 if($bub[$j]>$bub[$j+1]){ //前面的數大於後面的數,交換位置15 16 $temp = $bub[$j];17 $bub[$j] = $bub[$j+1];18 $bub[$j+1] = $temp;19 $flag = true;20 }21 }22 }23 //對數組單元從低到高重新排序24 sort($sortarr);25 //對數組重新排序並保持索引關係26 asort($asortarr);27 28 echo '冒泡:';29 echo '<pre>';30 var_dump($bub);31 32 echo 'sort:';33 echo '<pre>';34 var_dump($sortarr);35 36 echo 'asort:';37 echo '<pre>';38 var_dump($asortarr);39 ?>
代碼的輸出結果:
來源:http://www.cnblogs.com/melonwong/p/6231305.html