二分查詢法需要陣列是乙個有序的陣列
假設我們的陣列是乙個遞增的陣列,首先我們需要找到陣列的中間位置.
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...