首頁  >  文章  >  後端開發  >  PHP實作常見查找和排序演算法

PHP實作常見查找和排序演算法

WBOY
WBOY原創
2016-07-25 09:12:371011瀏覽

下面分享一些最常見的演算法,用PHP如何實作。

1、冒泡排序

  1. function bubble_sort($arr) {
  2. $n=count($arr);
  3. for($arr) {
  4. $n=count($arr);
  5. for($arr) {
  6. $n=count($arr);
  7. for($arr) {
  8. $n=count($arr);
  9. for($arr) {
  10. $n=count($arr);
  11. for($arr) {
  12. $n=count($arr);
  13. for( $i=0;$i for($j=$i+1;$j if($arr[$j ] $temp=$arr[$i]; $arr[$i]=$arr[$j];
$arr[$j]= $temp;

} } }

return $arr;
}
  1. 複製程式碼
  2. 複製程式碼
  3. 2、歸併排序
  4. function Merge(&$arr, $left, $mid, $right) {
  5. $i = $left ;
  6. $j = $mid + 1;
  7. $k = 0;
  8. $temp = array();
  9. while ($i {
  10. if ($arr[$i] $temp[$k++] = $arr[$i++];
  11. else
  12. $temp[ $k++] = $arr[$j++];
  13. }
  14. while ($i $temp[$k++] = $arr[$i++];
  15. while ($ j $temp[$k++] = $arr[$j++];
for ($i = $left, $j = 0; $i $arr[$i] = $temp[$j];}
function MergeSort(&$arr, $left, $right)

{ if ($left {

$mid = floor(($left + $right) / 2);
MergeSort($arr, $left, $mid);
MergeSort( $arr, $mid + 1, $right);
    Merge($arr, $left, $mid, $right);
  1. }
  2. }
  3. 複製程式碼
  4. 3、二分查找-遞歸
function bin_search($arr,$low,$high,$value) { if($low >$high) return false;
else {

$mid=floor(($low+$high)/2); if($value==$arr[$mid]) return $mid;

elseif($value return bin_search($arr,$low,$mid-1,$value);
else
    return bin_search($arr,$mid+1,$high,$value);
  1. }
  2. }
  3. 複製程式碼
  4. 4、二分查找-非遞歸
function bin_search($arr,$low,$high,$value) { while($ low $mid=floor(($low+$high)/2);

if($value==$arr[$mid]) return $mid; elseif($value $high=$mid-1;

else
$low=$mid+1;
    }
  1. return false;
  2. }
  3. 複製程式碼
  4. 5、快速排序
  5. function quick_sort($arr) {
  6. $n=count($arr);
  7. if($ n return $arr;
$key=$arr[0]; $left_arr=array(); $right_arr=array();
for($ i=1;$i if($arr[$i] $left_arr[]=$arr[$i]; else $right_arr[]=$arr[$i]; } $left_arr=quick_sort($left_arr); $right_arr=quick_sort($right_arr); return array_mer($$ ,array($key),$right_arr);}複製程式碼

6、選擇排序

  1. function select_sort($arr) {
  2. $n=count($arr);
  3. for($ i=0;$i $k=$i;
  4. for($j=$i+1;$j if ($arr[$j] $k=$j;
  5. }
  6. if($k!=$i) {
  7. $temp=$arr [ $i];
  8. $arr[$i]=$arr[$k];
  9. $arr[$k]=$temp;
  10. }
  11. }
  12. return $arr;
  13. }
複製程式碼

7、插入排序

  1. function insertSort($arr) {
  2. $n=count($arr);
  3. for($ i=1;$i $tmp=$arr[$i];
  4. $j=$i-1;
  5. while($arr[$j]> ;$tmp) {
  6. $arr[$j+1]=$arr[$j];
  7. $arr[$j]=$tmp;
  8. $j--;
  9. if( $jbreak;
  10. }
  11. }
  12. return $arr;
  13. }
複製代碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn