PHP二分演算法查詢示例及詳細分析

2021-08-30 20:37:28 字數 924 閱讀 9787

自己動手寫了乙個二分查詢的函式,是用php實現的。相信很多人在面試的時候也碰到過這樣的問題。好了,廢話太多了,開始吧!

/*** 二分演算法查詢

* @param array $array 要查詢的陣列

* @param int $min_key 陣列的最小下標

* @param int $max_key 陣列的最大下標

* @param mixed $value 要查詢的值

* @return boolean

*/function bin_search($array,$min_key,$max_key,$value)elseif($value < $array[$key])else

}else

}//現在我們來測試一下這個函式

$array = array(1,22,23,45,58);

$value = 45;

$min_key = min(array_keys($array));

$max_key = max(array_keys($array));

if(bin_search($array,$min_key,$max_key,$value))else

這樣就實現了二分查詢的功能了,是不是很簡單呢?

這裡涉及到了兩個知識點:

首先是二分演算法的概念:如下

1、二分查詢的先決條件:就是表中結點按關鍵字有序,且順序(一維陣列)儲存.

2、二分法思想:取中,比較

(2.1)求有序表的中間位置mid

(2.2)若r[mid].key == k,則查詢成功,若r[mid].key > k,在左子表中繼續進行二分查詢;若r[mid].key < k,則在右字表中繼續進行二分查詢

然後就是 遞迴了,這個大家都比較熟悉,在此就不多說了.

PHP二分查詢演算法的實現方法示例

二分查詢法需要陣列是乙個有序的陣列 假設我們的陣列是乙個遞增的陣列,首先我們需要找到陣列的中間位置.1.要知道中間位置就需要知道起始位置和結束位置,然後取出中間位置的值來和我們的值做對比。2.如果中間值大於我們的給定值,說明我們的值在中間位置之前,此時需要再次二分,因為在中間之前,所以我們需要變的值...

PHP 二分查詢演算法

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。param array arr 待查詢區間 param int number 查詢數 param int lower 區間最低點 param in...

php二分查詢演算法

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。資料一分為二,然後兩邊比較,保留有效區間,繼續一分為二查詢,直到找到或者超出區間則結束,所以二分查詢的基本步驟是 確定要查詢的區間 確定二分時的參...