PHP如何判斷有序數(shù)組是否包含某個(gè)值-創(chuàng)新互聯(lián)

今天小編給大家分享的是PHP如何判斷有序數(shù)組是否包含某個(gè)值,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。

創(chuàng)新互聯(lián)建站 - 遂寧聯(lián)通機(jī)房,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),遂寧聯(lián)通機(jī)房,西南服務(wù)器托管,四川/成都大帶寬,機(jī)柜大帶寬,四川老牌IDC服務(wù)商

問(wèn)題:對(duì)于一列有序數(shù)組,如何判斷給出的一個(gè)值,該值是否存在于數(shù)組。

思路:判斷是否存在,最簡(jiǎn)單是,直接循環(huán)該數(shù)組,對(duì)每一個(gè)值進(jìn)行比較。但是對(duì)于有序數(shù)組來(lái)說(shuō),這樣寫(xiě)就完全沒(méi)有利用好“有序”這一特點(diǎn)。

所有我們使用到“二分法查找”,

//有序數(shù)組為
$arr = array(2,5,66,87,954,1452,5865);
//查找值
$str = 1452;
//我們先定義 三個(gè)參數(shù)
$front = 0;//一個(gè)開(kāi)始值下標(biāo)
$end = count($arr) - 1;//一個(gè)結(jié)束值下標(biāo)
$mid = intval(($front + $end) / 2);//中間值下標(biāo)

1、第一次比較,我們直接判斷查找值str是否等于中間值mid,如果等于 直接返回 true;

2、如果查找值str大于中間值mid,則說(shuō)明查找值str可能在中間值的右邊,即對(duì)開(kāi)始值front需重新賦值 = 中間值mid + 1,結(jié)束值end不用變,依次中間值mid為新的開(kāi)始值 + 結(jié)束值;

PHP如何判斷有序數(shù)組是否包含某個(gè)值

3、如果查找值str小于中間值mid,則說(shuō)明查找值str可能在中間值的左邊,即開(kāi)始值不用變,結(jié)束值end需重新賦值 = 中間值 - 1,依次中間值mid為開(kāi)始值 + 新的結(jié)束值;

-----如上,對(duì)于傳入的開(kāi)始值,結(jié)束值,中間值,進(jìn)行比較。一旦開(kāi)始值 大于 結(jié)束值 則說(shuō)明沒(méi)有找到,結(jié)束查詢(xún),反之等于就返回已找到。

具體代碼如下:

$str = 89;//查找值
$arr = [1,55,66,89,420];//有序數(shù)組
$ren = find($arr, $str);
echo '<pre>';
var_dump($ren);
function find($arr, $str){
    $front = 0;//開(kāi)始下標(biāo)
    $end = count($arr) - 1;//結(jié)束下標(biāo)
    while($front <= $end){//結(jié)束值 大于 開(kāi)始值 ,反之則退出
        $mid = intval(($front + $end) / 2);//中間值下標(biāo)
        if($str == $arr[$mid]){
            return $mid;//存在直接返回值的下標(biāo)
        }
        if($str > $arr[$mid]){
            $front = $mid + 1;//在前面
        }
        if($str < $arr[$mid]){
            $end = $mid - 1;//在后面
        }
    }
    return false;
}

返回結(jié)果:89為第四個(gè)元素值下標(biāo)3

PHP如何判斷有序數(shù)組是否包含某個(gè)值

以上就是PHP如何判斷有序數(shù)組是否包含某個(gè)值的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎來(lái)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁(yè)名稱(chēng):PHP如何判斷有序數(shù)組是否包含某個(gè)值-創(chuàng)新互聯(lián)
瀏覽路徑:http://muchs.cn/article34/dpeepe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、App設(shè)計(jì)外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站排名、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)