二分查找PHP實現

nbnb 9年前發布 | 1K 次閱讀 PHP

<?php
/**二分查找:查找一個值在數組中的位置

  • @$arr:操作的數組,前提是按順序排列
  • @$val:查找的值
  • @$low:查找的起始位置,默認從數組的第一個數找起
  • @hight:查找的結束位置 **/ function binarySearch($arr, $val, $hight, $low=0){ while($low <= $hight){
      $mid = ceil($low + ($hight - $low) / 2);
      if($arr[$mid] == $val){
          return $mid;
      }elseif($arr[$mid] > $val){
          $hight = $mid -1;
      }else{
          $low = $mid +1;
      }
    
    } return -1; } header('Content-Type:text/html; charset=utf-8');

//產生一個數組 $arr = range(0,20); echo '<pre>'; print_r($arr); echo '</pre>';

$low = 0; $hight = count($arr) - 1; $findVal = rand(0, 20); $index = binarySearch($arr, $findVal, $hight, $low); printf("查找的值 '%d' 在數組中的下標 '%s'", $findVal, $index); ?></pre>

 本文由用戶 nbnb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!