PHP中實現二分法查詢的兩種方法

2021-08-01 15:07:39 字數 1469 閱讀 4456

二分法查詢需要陣列是乙個遞增的陣列。

想要寫出二分法查詢的**,首先要懂得二分法實現查詢的原理:

①要知道中間位置就需要知道起始位置和結束位置,然後取出中間位置的值來和我們的值做對比。

②如果中間值大於我們的給定值,說明我們的值在中間位置之前,此時需要再次二分,因為在中間之前,所以我們需要變的值是結束位置的值,此時結束位置的值應該是我們此時的中間位置。

③反之,如果中間值小於我們給定的值,那麼說明給定值在中間位置之後,此時需要再次將後一部分的值進行二分,因為在中間值之後,所以我們需要改變的值是開始位置的值,此時開始位置的值應該是我們此時的中間位置,直到我們找到指定值。

④或者中間值等於最初的起始位置,或結束位置(此時說明給定值未找到)。

下面就看看怎麼實現二分法吧!!!

/*

遞迴呼叫實現二分法查詢

//$search 函式 $array為陣列,$k為要找的值,$low為查詢範圍的最小鍵值,$high為查詢範圍的最大鍵值

//intval返回整數值*/

functionsearch(

$array,$k

,$low=0

,$high=0

)if(

$low

<=

$high

)elseif(

$k <

$array

[$mid

])else

}return"沒有要查詢的值";

}$array

=array(3,

4,5,

7,8,

9,10);

echosearch(

$array,4

);

/*//while迴圈實現二分法查詢

*/$arr

=array(2,

4,5,

6,7,

8,9,

10);

$low = 0

;

//要查詢範圍的最小鍵值

$search = 6

;//計算出陣列的長度

$high

= count

($arr)-1

;while(

$low

<=

$high

)elseif(

$arr

[$mid

] >

$search

)else

}是不是感覺很簡單ㄟ(⊙ω⊙ㄟ)哈

PHP中實現二分法查詢的兩種方法

二分法查詢需要陣列是乙個遞增的陣列。想要寫出二分法查詢的 首先要懂得二分法實現查詢的原理 要知道中間位置就需要知道起始位置和結束位置,然後取出中間位置的值來和我們的值做對比。如果中間值大於我們的給定值,說明我們的值在中間位置之前,此時需要再次二分,因為在中間之前,所以我們需要變的值是結束位置的值,此...

php實現二分法查詢

一 遞迴方法實現二分法查詢 注 前提是陣列是有序陣列 原理 1 先計算出陣列的中間值並向上取整 2 判斷中間值是否和要查詢的值相同,相同則直接返回 3 不相同就判斷大小如果比中間值大,就用array slice從中間的下乙個位置擷取片段生成新陣列,反之同樣方法擷取片段。4 然後用遞迴的手法,直至找到...

二分法查詢的實現

description 二分法查詢的實現 簡單的解釋就是說把要查詢的目標物件首先和數字最中的數字對,如果比這個數字大,則查詢左側,如果比這個數字小則查詢右側 再按照以上邏輯進行從中間切分判斷查詢左邊還是右邊從而縮小查詢範圍 auther eleven create 2020 04 02 22 40 ...