這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)使用PHP怎么查找一列有序數(shù)組是否包含某值,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
問題:對于一列有序數(shù)組,如何判斷給出的一個值,該值是否存在于數(shù)組。
思路:判斷是否存在,最簡單是,直接循環(huán)該數(shù)組,對每一個值進行比較。但是對于有序數(shù)組來說,這樣寫就完全沒有利用好“有序”這一特點。
所有我們使用到“二分法查找”,
//有序數(shù)組為 $arr = array(2,5,66,87,954,1452,5865); //查找值 $str = 1452; //我們先定義 三個參數(shù) $front = 0;//一個開始值下標 $end = count($arr) - 1;//一個結(jié)束值下標 $mid = intval(($front + $end) / 2);//中間值下標
1、第一次比較,我們直接判斷查找值str是否等于中間值mid,如果等于 直接返回 true;
2、如果查找值str大于中間值mid,則說明查找值str可能在中間值的右邊,即對開始值front需重新賦值 = 中間值mid + 1,結(jié)束值end不用變,依次中間值mid為新的開始值 + 結(jié)束值;
3、如果查找值str小于中間值mid,則說明查找值str可能在中間值的左邊,即開始值不用變,結(jié)束值end需重新賦值 = 中間值 - 1,依次中間值mid為開始值 + 新的結(jié)束值;
-----如上,對于傳入的開始值,結(jié)束值,中間值,進行比較。一旦開始值 大于 結(jié)束值 則說明沒有找到,結(jié)束查詢,反之等于就返回已找到。
具體代碼如下:
$str = 89;//查找值 $arr = [1,55,66,89,420];//有序數(shù)組 $ren = find($arr, $str); echo '<pre>'; var_dump($ren); function find($arr, $str){ $front = 0;//開始下標 $end = count($arr) - 1;//結(jié)束下標 while($front <= $end){//結(jié)束值 大于 開始值 ,反之則退出 $mid = intval(($front + $end) / 2);//中間值下標 if($str == $arr[$mid]){ return $mid;//存在直接返回值的下標 } if($str > $arr[$mid]){ $front = $mid + 1;//在前面 } if($str < $arr[$mid]){ $end = $mid - 1;//在后面 } } return false; }
返回結(jié)果:89為第四個元素值下標3
int(3)
一、phpStudy,是一個新手入門最常用的開發(fā)環(huán)境。二、WampServer,WampServer也同樣的也是和phpStudy一樣操作簡單對小白比較友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的建站集成軟件包;四、MAMP,MAMP分為兩種MAMP和MAMP Pro for Mac。五、寶塔面板,寶塔面板是一款服務(wù)器管理軟件,支持windows和linux系統(tǒng)。六、UPUPW,UPUPW是目前Windows平臺下最具特色的Web服務(wù)器PHP套件。
上述就是小編為大家分享的使用PHP怎么查找一列有序數(shù)組是否包含某值了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站名稱:使用PHP怎么查找一列有序數(shù)組是否包含某值-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://www.chinadenli.net/article26/doidcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、Google、微信公眾號、手機網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容