php實現二分法查詢

2021-08-20 11:35:08 字數 932 閱讀 5224

一、遞迴方法實現二分法查詢:

注:前提是陣列是有序陣列;
原理:

1)先計算出陣列的中間值並向上取整

2)判斷中間值是否和要查詢的值相同,相同則直接返回

3)不相同就判斷大小如果比中間值大,就用array_slice從中間的下乙個位置擷取片段生成新陣列,反之同樣方法擷取片段。

4)然後用遞迴的手法,直至找到相應元素,如果到最後也沒有找到,也就是陣列長度為1時還沒有找到,就直接返回沒有此元素;

function

secsearch

($data , $search)

if( count($data) == 1 )

if($data[$mid] > $search)

if( $data[$mid] < $search)

}

二、普通方式實現

原理:

1)定義乙個最小值和最大值,最小值為0,最大值為陣列長度減1

2)while迴圈判斷當最小值小於等於最大值時,定義乙個中間值,為最大值和最小值的和除以2

3)如果中間值和要查詢的值剛好相等,直接跳出迴圈

4)如果不相等,無非兩種情況,大於或小於,當大於中間值時,給最小值賦值為中間值+1,小於時給最大值賦值為中間值減1,直至找到,或者當最大值小於最小值時跳出迴圈,返回找到或沒找到

function

search

($data ,$search)

if( $data[$mid] > $search )

if($data[$mid] < $search)

}return

'沒有找到';

}

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...