程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 排序算法篇--之冒泡排序,排序算法冒泡

排序算法篇--之冒泡排序,排序算法冒泡

編輯:關於PHP編程

排序算法篇--之冒泡排序,排序算法冒泡


  《大話數據結構》中這樣介紹冒泡排序的基本思想:兩兩比較相鄰元素的關鍵字,如果反序則交換,直到沒有反序的記錄為止。也就是相鄰元素之間兩兩比較,如果前一個值大於後一個(或者前一個值小於後一個),則交換順序,所以這樣的話,最終的結果是從小到大(或者從大到小)的排序。

  當然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 ?>

  代碼的輸出結果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved