一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP有序表查找之二分查找(折半查找)算法示例

PHP有序表查找之二分查找(折半查找)算法示例

2019-10-22 10:56LSGOZJ PHP教程

這篇文章主要介紹了PHP有序表查找之二分查找(折半查找)算法,簡單介紹了二分查找法的概念、原理并結合實例形式分析了php基于二分查找算法進行有序線性表查找的相關操作技巧,需要的朋友可以參考下

本文實例講述了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

總結:

二叉查找的時間復雜度是 O(logn)。不過由于二叉查找的前提條件是需要有序表順序存儲(數組),如果該有序表需要頻繁的執行插入或刪除操作,維護有序的排序會帶來不小的工作量。

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩成a人片在线观看日本 日韩不卡一区二区 | 36美女厕所撒尿全过程 | 女主被当众调教虐np | 啪啪无尽3d动漫漫画免费网站 | 草草视频免费观看 | 日本高清中文字幕一区二区三区 | 美女的隐私脱裤子无遮挡 | 男人捅女人动漫 | 三级理论在线观看 | 国产99久久精品一区二区 | 狠狠色婷婷丁香六月 | 国语自产拍在线观看7m | 贰佰麻豆剧果冻传媒一二三区 | 99久久综合久中文字幕 | 亚洲天堂视频在线观看免费 | 乌克兰xxxxx 我要色色网 | 免费特黄一级欧美大片在线看 | 国产伦精品一区二区三区免费观看 | 国产精品视频视频久久 | 日本免费久久久久久久网站 | b站免费 | 九九九好热在线 | 欧美精品超清在线播放 | 精品99在线观看 | 91视频国产精品 | 无码一区二区三区视频 | 日韩在线 中文字幕 | 免费理伦片在线观看全网站 | 成人国产精品视频频 | 色哟约| 久久99精国产一区二区三区四区 | 北岛玲在线视频 | 无人在线视频高清免费观看动漫 | 国产专区亚洲欧美另类在线 | 免费观看一区二区 | 日本xnxnxnxnxn护士 | tube日本高清老少配 | 欧美一区二区三 | xxxx泡妞中国 | 被巨大黑人的翻白眼 | 亚洲精品久久中文字幕 |