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

2022-10-06 06:21:13 字數 1099 閱讀 2583

二分查詢法需要陣列是乙個有序的陣列

假設我們的陣列是乙個遞增的陣列,首先我們需要找到陣列的中間位置.

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

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

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

4. 或者中間值等於最初的起始位置,或結caqmmde束位置(此時說明給定值未找到),下面我們來用**實現程式設計客棧~

//迴圈實現

function getvalue($num,$arr)

elseif($arr[middle]程式設計客棧麼意味著該值在陣列的後半段

//所以起始位置變成當前的middle的值,end位置不變。

$start=$middle;

$middle=floor(($start+$end)/2);

} else

} return false;

}//遞迴實現

/** 從陣列中獲取元素值

* @param1 int $num,要查詢的目標值

* @param2 array $arr,要查詢的陣列

* @param3 int $start,查詢的起始位置

* @param4 int $end,查詢的結束位置

* @return mixed,找到了返回位置,沒找到返回false

*/function getvalue4($num,$arr,$start = 0caqmmde,$end = 100)elseif($arr[$middle] < $num)

//呼叫自己去查詢:遞迴點

return getvalue4($num,$arr,$start,$end); //getvalue4($num,$arr,51,100)

}else

//都沒有找到

return false;

}

Ruby實現二分搜尋 二分查詢 演算法的簡單示例

在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic sea程式設計客棧rch 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜...

二分查詢演算法,折半查詢,PHP的實現

演算法要求 1,順序的儲存結構。2,按大小有序排列 演算法查詢過程 假設是一張公升序的表,1,關鍵字與中間位置比較,相等則查詢成功。2,大於中間位置,則將表對半拆,取後半段的表,然後重新對比中間位置的值。3,小於中間位置,則將表對半拆,取前半段的表,然後重新對比中間位置的值。4,如果中間位置與開始位...

PHP 二分查詢演算法

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