自己動手寫了乙個二分查詢的函式,是用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 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。資料一分為二,然後兩邊比較,保留有效區間,繼續一分為二查詢,直到找到或者超出區間則結束,所以二分查詢的基本步驟是 確定要查詢的區間 確定二分時的參...