主頁(yè) > 知識(shí)庫(kù) > PHP實(shí)現(xiàn)的折半查找算法示例

PHP實(shí)現(xiàn)的折半查找算法示例

熱門(mén)標(biāo)簽:阿里云 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 團(tuán)購(gòu)網(wǎng)站 Mysql連接數(shù)設(shè)置 電子圍欄 銀行業(yè)務(wù) 服務(wù)器配置 Linux服務(wù)器

本文實(shí)例講述了PHP實(shí)現(xiàn)的折半查找算法。分享給大家供大家參考,具體如下:

定義:折半查找技術(shù),也就是二分查找。它的前提是線性表中的記錄必須是關(guān)鍵碼有序(通常從大到小有序),線性表必須采用順序存儲(chǔ)。

折半查找的基本思想:取中間記錄作為比較對(duì)象,若給定值與中間記錄的關(guān)鍵字,則在中間記錄的關(guān)鍵字相等,則查找成功;若給定值小于中間記錄的作伴去繼續(xù)查找;若給定值大于中間記錄的關(guān)鍵字,則在中間記錄的右半?yún)^(qū)繼續(xù)查找。不斷重復(fù)上述過(guò)程,直到查找成功,或所有查找區(qū)域無(wú)記錄,查找失敗為止。

實(shí)現(xiàn)代碼:

?php
//遞歸方式
function bin_recur_search($arr,$val){
  global $time;
  if(count($arr) >= 1){
    $mid = intval(count($arr) / 2);
    $time++;
    if($arr[$mid] == $val){
      return '值為:'.$arr[$mid].'br>查找次數(shù):'.$time.'br>';
    }elseif($arr[$mid] > $val){
      $arr = array_splice($arr,0,$mid);
      return bin_recur_search($arr, $val);
    }else{
      $arr = array_slice($arr,$mid + 1);
      return bin_recur_search($arr, $val);
    }
  }
  return '未找到'.$val;
}
//非遞歸方式
function bin_search($arr,$val){
  if(count($arr) >= 1){
    $low = 0;
    $high = count($arr);
    $time = 0;
    while($low = $high){
      $time++;
      $mid = intval(($low + $high)/2);
      if($val == $arr[$mid]){
        return '索引:'.$mid.'br>值為:'.$arr[$mid].'br>查找次數(shù):'.$time;
      }elseif($val > $arr[$mid]){
        $low = $mid + 1;
      }else{
        $high = $mid - 1;
      }
    }
  }
  return '未找到'.$val;
}
$arr = array(1,3,5,7,7,9,25,68,98,145,673,8542);
echo bin_recur_search($arr, 673);
echo bin_search($arr, 673);
?>

運(yùn)行結(jié)果:

值為:673
查找次數(shù):4
索引:10
值為:673
查找次數(shù):4

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP 冒泡排序 二分查找 順序查找 二維數(shù)組排序算法函數(shù)的詳解
  • php二分查找二種實(shí)現(xiàn)示例
  • php順序查找和二分查找示例
  • php數(shù)據(jù)結(jié)構(gòu)與算法(PHP描述) 查找與二分法查找
  • 解析php二分法查找數(shù)組是否包含某一元素
  • PHP二分查找算法示例【遞歸與非遞歸方法】
  • PHP二分查找算法的實(shí)現(xiàn)方法示例
  • PHP基于二分法實(shí)現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
  • PHP實(shí)現(xiàn)的二分查找算法實(shí)例分析
  • PHP折半(二分)查找算法實(shí)例分析

標(biāo)簽:江蘇 棗莊 大理 萍鄉(xiāng) 衢州 蚌埠 衡水 廣元

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)的折半查找算法示例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266