91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在PHP中實現一個二分查找算法

發布時間:2021-04-09 15:51:41 來源:億速云 閱讀:153 作者:Leah 欄目:開發技術

怎么在PHP中實現一個二分查找算法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

二分查找技術,又稱為折半查找。它的前提是線性表中的記錄必須是關鍵碼有序(通常從小到達有序),線性表必須采用順序存儲。

基本思想:

在有序表中,取中間記錄作為比較對象,若給定值與中間記錄的關鍵字相等,則查找成功;若給定值小于中間記錄的關鍵字,則在中間記錄的左半區繼續查找;若給定值大于中間記錄的關鍵字,則在中間記錄的右半區繼續查找。不斷重復上述過程,直到查找成功,或所有查找區域無記錄,查找失敗為止。

代碼:

<?php
//二分搜索(折半查找)算法(前提是數組必須是有序數組) 時間復雜度是 O(logn)
$i = 0; //存儲對比的次數
//@param 待查找數組
//@param 待搜索的數字
function binsearch($arr,$num){
 $count = count($arr);
 $lower = 0;
 $high = $count - 1;
 global $i;
 while($lower <= $high){
  $i ++; //計數器
  if($arr[$lower] == $num){
   return $lower;
  }
  if($arr[$high] == $num){
   return $high;
  }
  $middle = intval(($lower + $high) / 2);
  if($num < $arr[$middle]){
   $high = $middle - 1;
  }else if($num > $arr[$middle]){
   $lower = $middle + 1;
  }else{
   return $middle;
  }
 }
 //返回-1表示查找失敗
 return -1;
}
$arr = array(0,1,16,24,35,47,59,62,73,88,99);
$pos = binsearch($arr,62);
print($pos);
echo "<br>";
echo $i;

運行結果:

7
3

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

肥东县| 美姑县| 汽车| 莱西市| 临沭县| 呼玛县| 彭水| 弥渡县| 通化县| 日喀则市| 五华县| 文安县| 兰坪| 阜南县| 思南县| 延津县| 宜君县| 高雄县| 宁化县| 大悟县| 沾益县| 罗平县| 都江堰市| 汕尾市| 韩城市| 镇康县| 冷水江市| 邵阳市| 惠安县| 乌兰县| 武宁县| 无为县| 米脂县| 什邡市| 徐汇区| 通州区| 梁平县| 巴里| 纳雍县| 邳州市| 六枝特区|