1. 程式人生 > >PHP寫一個二分法查詢一個值在陣列中的位置

PHP寫一個二分法查詢一個值在陣列中的位置

首先,用二分法的話陣列必須是一個有序的陣列,可以從大到小也可以從小到大,下邊我給的是陣列從小到大排列的方法:

$arr = array(2,4,6,7,8,9,10,12,14,16,18);
   $low = 0;   //要查詢範圍的最小鍵值
   $search = 6;    //要查詢的值
   $high = count($arr)-1;  //計算出陣列的長度
  while($low <= $high){    //取得陣列的中間鍵值    
      $mid = intval(($low+$high)/2);    
      if($arr[$mid]==$search){  //如果取出中間的下標值跟你要搜尋的值相等的話,直接去除值得下標就行        
            echo "你要查詢的值在陣列內的下標為".$mid; break;    
      }else if($arr[$mid] > $search){   
            $high = $mid -1;    
      }else{
            $high = $mid+1;    
      }
   }