PHP二分查找算法示例【遞歸與非遞歸方法】
本文實(shí)例講述了PHP二分查找算法。分享給大家供大家參考,具體如下:
binarySearch
二分查找采用的方法比較容易理解,以數(shù)組為例:
① 先取數(shù)組中間的值floor((low+top)/2),
② 然后通過與所需查找的數(shù)字進(jìn)行比較,若比中間值大,則將首值替換為中間位置下一個(gè)位置,繼續(xù)第一步的操作;若比中間值小,則將尾值替換為中間位置上一個(gè)位置,繼續(xù)第一步操作
③ 重復(fù)第二步操作直至找出目標(biāo)數(shù)字
比如從1,3,9,23,54 中查找數(shù)字23,
首位置為0, 尾位置為4,中間位置就為2 值為9,比23小,則首位置更新為2+1即3;那么接下來中間位置就為(3+4)/2=3,值為23,比較相等即找到
// 非遞歸算法: // $target是要查找的目標(biāo) $arr是已經(jīng)排序好的數(shù)組 function binary(&$arr,$low,$top,$target){ while($low <= $top){ //由于php取商是有小數(shù)的,所以向下取整,不過也可不加,數(shù)組也會(huì)取整 $mid = floor(($low+$top)/2); echo $mid."<br>"; if($arr[$mid]==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ $low = $mid+1; }else{ $top = $mid-1; } } return -1; }
// 遞歸算法: function binaryRecursive(&$arr,$low,$top,$target){ if($low<=$top){ $mid = floor(($low+$top)/2); if($mid==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ return binaryRecursive($arr,$mid+1,$top,$target); }else{ return binaryRecursive($arr,$low,$top-1,$target); } }else{ return -1; } }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php查找技巧與方法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php正則表達(dá)式用法總結(jié)》、及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP遞歸的三種常用方式
- php遞歸函數(shù)三種實(shí)現(xiàn)方法及如何實(shí)現(xiàn)數(shù)字累加
- PHP 無限分類三種方式 非函數(shù)的遞歸調(diào)用!
- php菜單/評(píng)論數(shù)據(jù)遞歸分級(jí)算法的實(shí)現(xiàn)方法
- PHP遞歸算法的簡(jiǎn)單實(shí)例
- PHP基于遞歸算法解決兔子生兔子問題
- PHP基于非遞歸算法實(shí)現(xiàn)先序、中序及后序遍歷二叉樹操作示例
- PHP基于二分法實(shí)現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
- PHP實(shí)現(xiàn)字符串翻轉(zhuǎn)功能的方法【遞歸與循環(huán)算法】
- PHP基于遞歸實(shí)現(xiàn)的約瑟夫環(huán)算法示例
- PHP使用遞歸算法無限遍歷數(shù)組示例
- php獲得文件夾下所有文件的遞歸算法的簡(jiǎn)單實(shí)例
- PHP冒泡算法詳解(遞歸實(shí)現(xiàn))
- 關(guān)于PHP遞歸算法和應(yīng)用方法介紹
- PHP遞歸算法的詳細(xì)示例分析
- php全排列遞歸算法代碼
- php實(shí)現(xiàn)遞歸的三種基本方式
相關(guān)文章
Linux系統(tǒng)下使用XHProf和XHGui分析PHP運(yùn)行性能
這篇文章主要介紹了Linux系統(tǒng)下使用XHProf和XHGui分析PHP運(yùn)行性能的方法,該方案支持Apache與Nginx服務(wù)器及多種數(shù)據(jù)庫環(huán)境,需要的朋友可以參考下2015-12-12php中隨機(jī)函數(shù)mt_rand()與rand()性能對(duì)比分析
這篇文章主要介紹了php中隨機(jī)函數(shù)mt_rand()與rand()性能對(duì)比分析,較為詳細(xì)的分析了兩個(gè)函數(shù)的具體用法,并以實(shí)例形式分析了在不同平臺(tái)下的運(yùn)行效率問題,需要的朋友可以參考下2014-12-12PHP的命令行擴(kuò)展Readline相關(guān)函數(shù)的使用
PHP 作為一個(gè) Web 開發(fā)語言,相對(duì)來說,命令行程序并不是它的主戰(zhàn)場(chǎng)。所以很多年輕的 PHP 開發(fā)者可能連命令行腳本都沒有寫過,更別提交互式的命令操作了。而今天,我們帶來的這個(gè)擴(kuò)展就是針對(duì) PHP 的交互式命令行操作的2021-05-05