二分查詢演算法介紹

2021-09-29 17:40:31 字數 1248 閱讀 5124

二分查詢演算法的實現過程如下:在排序陣列中查詢某乙個資料項,首先讓待查資料與中間下標元素開始比較,如果相等則返回,如果小於中間下標元素,重新開始從低位開始,(中間下標-1)結束的陣列內,繼續執行相同的查詢操作,如果大於中間下標元素,重新開始從中間下標+1,高位結束的陣列內,繼續執行相同的查詢操作,直到低位超過高位,如果沒有找到,返回-1,如果找到,則返回對應的中間下標。因為每次執行一次查詢操作,查詢範圍會減少一半,所以二分查詢也叫折半查詢。

二分查詢演算法的前提是陣列必須是排好序的,如果是亂序的,二分查詢不適用。如果是僅僅查詢元素是否存在,可以考慮將亂序的陣列排序,然後使用二分查詢,但是查詢的下標不能作為最終計算的依據,只能作為元素存在的依據。

二分查詢的思路很特別,就是不斷的從原始陣列中進行範圍縮小式的查詢,基於這種原理,二分查詢演算法的實現可以使用迴圈的方式實現,也可以使用遞迴的方式實現。關鍵點是計算中間下標,以及演算法終止的條件。中間下標計算方式:mid=(low+high)/2,最開始low=0,high=size(array)-1,之後根據比較結果,low或者high會發生變化。終止條件low>high。根據這些思路,我們給出二分查詢的示例**:

如果查詢乙個不存在的元素,比如98,結果如下:

關於二分查詢在一般的面試中會經常問到,筆試題也會出現,是乙個面試基本也是必備的演算法。至於它的複雜度,我們可以這樣來推算,至少是n/2,但是這還不是最科學的,理論上最壞的情況是所有的折半均執行一次才結束,因此是乙個log2(n):以2為底數,n的對數。一般也直接寫作log(n)。

前面的原理說了,二分查詢的前提是陣列是排序的,所以他的適用範圍是有限制的,但是他的應用卻是最廣泛的,這得益於他的查詢效率。

查詢演算法 二分查詢

利用二分查詢演算法查詢某乙個元素,前提條件是該被查詢的元素是乙個已經有序的陣列。二分查詢的思想是將陣列元素的最高位 high 和最低位 low 進行標記,取陣列元素的中間 mid 和和要查詢的值 key 進行比較,如果目標值比中間值要大,則將最低位設定為mid 1,繼續進行查詢。如果目標值小於中間值...

查詢演算法 二分查詢

二分查詢的思路是很簡單的,前提是這組資料是有順序的。思路是從中間找乙個數,判斷大小,如果數比中間數大,說明在中間數到結尾的數中,如果小於,則說明在開始和中間數之間,經過多次相同操作,就可以得到我們想查詢的數時間複雜度就是 o logn 非遞迴的實現 const testarr let i 0whil...

查詢演算法 二分查詢

二分查詢是乙個常用的查詢演算法,其原理在於通過不斷切分乙個規則排序,對半的去尋找目標元素所在的區間與位置。但是其有乙個前提,那就是資料結構需要是順序儲存結構,並且關鍵字大小有序排列。例子如下 例 有乙個數列 12,23,45,56,67,89 請使用二分查詢找到56的位置 解 首先mid 0 5 2...