国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 邏輯算法 > 正文

PHP如何實(shí)現(xiàn)折半查找算法

2020-03-22 18:54:37
字體:
供稿:網(wǎng)友
本文主要介紹了PHP實(shí)現(xiàn)的折半查找算法,簡(jiǎn)單描述了折半查找的原理,并結(jié)合實(shí)例形式分析了php采用遞歸與非遞歸方式實(shí)現(xiàn)折半查找算法的相關(guān)操作技巧,需要的朋友可以參考下,希望能幫助到大家。

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

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

java算法中的關(guān)于二分查找和折半查找的實(shí)例詳解

javascript折半查找詳解_javascript技巧

javascript 折半查找字符在數(shù)組中的位置(有序列表)_javascript技巧

以上就是PHP如何實(shí)現(xiàn)折半查找算法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注 其它相關(guān)文章!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

上一篇:PHP遞歸算法詳解

下一篇:PHP常用算法

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 门源| 崇州市| 威海市| 金寨县| 额济纳旗| 驻马店市| 安达市| 萨迦县| 平江县| 南康市| 新兴县| 洛扎县| 玉环县| 遂川县| 武平县| 长垣县| 岳阳市| 九江县| 苍山县| 兴隆县| 湟源县| 涪陵区| 庆安县| 鹿邑县| 土默特左旗| 略阳县| 舒城县| 高密市| 京山县| 和静县| 迁西县| 吉木萨尔县| 辉县市| 法库县| 蕉岭县| 黄石市| 喜德县| 汶上县| 贵定县| 靖宇县| 黄浦区|