php實現冒泡排序

來源:互聯網
上載者:User

標籤:

冒泡排序是非常容易理解和實現,,以從小到大排序舉例:
設數組長度為N。
1.比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。
2.這樣對數組的第0個資料到N-1個資料進行一次遍曆後,最大的一個資料就“沉”到數組第N-1個位置。
3.N=N-1,如果N不為0就重複前面二步,否則排序完成。

方案一:

 1 function bubble1_sort($array){ 2     $count=count($array); 3     if($count<=1){ 4         return $array; 5     } 6     for($i=0;$i<$count;$i++){ 7         for($j=0;$j<$count;$j++){ 8             if($array[$i]<$array[$j]){ 9                 $temp=$array[$i];10                 $array[$i]=$array[$j];11                 $array[$j]=$temp;12             }13         }14     }15     return $array;16 }

 方案二:

 1 function bubble2_sort($array){ 2     $count=count($array); 3     if($count<=1){ 4         return $array; 5     } 6      7     for($i=0;$i<$count;$i++){ 8         for($j=1;$j<$count-$i;$j++){ 9             if($array[$j-1]>$array[$j]){10                 $temp=$array[$j-1];11                 $array[$j-1]=$array[$j];12                 $array[$j]=$temp;13             }14         }15     }16     return $array;17 }

方案三:

設定一個標誌,如果這一趟發生了交換,則為true,否則為false。明顯如果有一趟沒有發生交換,說明排序已經完成。

 1 function bubble3_sort($array){ 2     $count=count($array); 3     if($count<=1){ 4         return $array; 5     } 6     $flag=true; 7     $j=$count; 8     while($flag){ 9         $flag=false;10         for($i=1;$i<$j;$i++){11             if($array[$i-1]>$array[$i]){12                 $temp=$array[$i-1];13                 $array[$i-1]=$array[$i];14                 $array[$i]=$temp;15                 $flag=true;16             }17         }18         $j--;19         20     }21     return $array;22     23 }

方案四:

如果有100個數的數組,僅前面10個無序,後面90個都已排好序且都大於前面10個數字,那麼在第一趟遍曆後,最後發生交換的位置必定小於10,且這個位置之後的資料必定已經有序了,記錄下這位置,第二次只要從數組頭部遍曆到這個位置就可以了。

function bubble4_sort($array){    $count=count($array);    if($count<=1){        return $array;    }    $flag=$count;    while($flag>0){        $k=$flag;        $flag=0;        for($j=1;$j<$k;$j++){            if($array[$j-1]>$array[$j]){                $temp=$array[$j-1];                $array[$j-1]=$array[$j];                $array[$j]=$temp;                $flag=$j;            }        }    }    return $array;}

方案五:

function bubble_sort($array){    $count=count($array);    if($count<=1){        return $array;    }    for($i=$count-1;$i>0;$i--){        $flag=false;        for($j=0;$j<$count;$j++){            if($array[$j]>$array[$j+1]){                $temp=$array[$j];                $array[$j]=$array[$j+1];                $array[$j+1]=$temp;                $flag=true;            }        }        if(!$flag)            break;    }    return $array;}

 

php實現冒泡排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.