php冒泡排序就是實現數據交換然后找最大最小之間的,最后交換位置進行排序了,這個是我們以前用得最多的排序法了.
冒泡排序(BubbleSort)的基本概念是:
依次比較相鄰的兩個數,將小數放在前面,大數放在后面,即在第一趟,首先比較第1個和第2個數,將小數放前,大數放后,然后比較第2個數和第3個數,將小數放前,大數放后,如此繼續,直至比較最后兩個數,將小數放前,大數放后,至此第一趟結束,將最大的數放到了最后,在第二趟,仍從第一對數開始比較(因為可能由于第2個數和第3個數的交換,使得第1個數不再小于第2個數),將小數放前,大數放后,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數),如此下去,重復以上過程,直至最終完成排序.
例1,簡單實現冒泡排序,代碼如下:
- #冒泡排序法
- $arr = array(12,45,89,3,24,55,223,76,22,11,89,2,4,5,28,112,20,434,23,65,65,765,6,8,23,5,33,553,45,423,64,77,84,23);
- $tmp;
- for($i=0;$i<count($arr)-1;$i++ ){
- for($j=0;$j<count($arr)-1-$i;$j++){
- if($arr[$j] > $arr[$j+1]){
- $tmp = $arr[$j];
- $arr[$j] = $arr[$j+1];
- $arr[$j+1] = $tmp;
- }
- }
- }
- print_r($arr);
例2,代碼如下:
- <?php
- //冒泡排序方法 function bubblesort(&$arr){
- //定義一個變量保存交換的值 $temp =0;
- for($i=0;$i<count($arr);$i++){
- for($j=0;$j<count($arr)-$i-1;$j++){
- if($arr[$j]>$arr[$j+1]){
- //如果前面的那個數大于后面的那個數,那么他們就進行交換 $temp=$arr[$j];
- $arr[$j]=$arr[$j+1];
- $arr[$j+1]=$temp;
- }
- }
- }
- }
- $arr=array(100,99,200,5,-4,6,-7);
- bubbleSort($arr);
- print_r($arr); //數組是值傳遞,所以傳遞的時候加個&符號就是地址傳遞,改變外部變量
- ?>
新聞熱點
疑難解答