php中實現冒泡排序、快速排序、選擇排序和插入排序等經典演算法

來源:互聯網
上載者:User
// 冒泡排序   function BubbleSort($arr) {       // 獲得數組總長度       $num = count($arr);       // 正向遍曆數組       for ($i = 1; $i < $num; $i++) {           // 反向遍曆           for ($j = $num - 1; $j >= $i ; $j--) {               // 相鄰兩個數比較               if ($arr[$j] < $arr[$j-1]) {                   // 暫存較小的數                   $iTemp = $arr[$j-1];                   // 把較大的放前面                   $arr[$j-1] = $arr[$j];                   // 較小的放後面                   $arr[$j] = $iTemp;               }           }       }       return $arr;   }          // 交換法排序   function ExchangeSort($arr){       $num = count($arr);       // 遍曆數組       for ($i = 0;$i < $num - 1; $i++) {           // 獲得當前索引的下一個索引           for ($j = $i + 1; $j < $num; $j++) {               // 比較相鄰兩個的值大小               if ($arr[$j] < $arr[$i]) {                   // 暫存較小的數                   $iTemp = $arr[$i];                   // 把較大的放前面                   $arr[$i] = $arr[$j];                   // 較小的放後面                   $arr[$j] = $iTemp;               }           }       }       return $arr;   }          // 選擇法排序   function SelectSort($arr) {       // 獲得數組總長度       $num = count($arr);       // 遍曆數組       for ($i = 0;$i < $num-1; $i++) {           // 暫存當前值           $iTemp = $arr[$i];           // 暫存當前位置           $iPos = $i;           // 遍曆當前位置以後的資料           for ($j = $i + 1;$j < $num; $j++){               // 如果有小於當前值的               if ($arr[$j] < $iTemp) {                   // 暫存最小值                   $iTemp = $arr[$j];                   // 暫存位置                   $iPos = $j;               }           }           // 把當前值放到算好的位置           $arr[$iPos] = $arr[$i];           // 把當前值換成算好的值           $arr[$i] = $iTemp;       }       return $arr;   }          // 插入法排序   function InsertSort($arr){       $num = count($arr);       // 遍曆數組    // http://www.bianceng.cn    for ($i = 1;$i < $num; $i++) {           // 獲得當前值           $iTemp = $arr[$i];           // 獲得當前值的前一個位置           $iPos = $i - 1;           // 如果當前值小於前一個值切未到數組開始位置           while (($iPos >= 0) && ($iTemp < $arr[$iPos])) {               // 把前一個的值往後放一位               $arr[$iPos + 1] = $arr[$iPos];               // 位置遞減               $iPos--;           }           $arr[$iPos+1] = $iTemp;       }       return $arr;   }          // 快速排序   function QuickSort($arr){       $num = count($arr);       $l = $r = 0;       $left = $right = array();       // 從索引的第二個開始遍曆數組       for ($i = 1;$i < $num; $i++) {           // 如果值小於索引1           if ($arr[$i] < $arr[0]) {               // 裝入左索引數組(小於索引1的資料)               $left[] = $arr[$i];               $l++;           } else {               // 否則裝入右索引中(大於索引1的資料)               $right[] = $arr[$i];               $r++; //           }              }       // 如果左索引有值 則對左索引排序       if($l > 1) {           $left = QuickSort($left);       }       // 排序後的數組       $new_arr = $left;       // 將當前數組第一個放到最後       $new_arr[] = $arr[0];       // 如果又索引有值 則對右索引排序       if ($r > 1) {           $right = QuickSort($right);       }       // 根據右索引的長度再次增加資料       for($i = 0;$i < $r; $i++) {           $new_arr[] = $right[$i];       }       return $new_arr;   }   ?>

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/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.