查詢演算法之二分查詢

2021-10-03 19:06:01 字數 644 閱讀 6682

在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0。

對於這樣的有序序列,可以使用二分查詢的演算法來實現。如下圖序列,二分查詢20。

在有序表中,取中間資料作為比較物件,若給定值與中間記錄的數值相等,則查詢成功;

若給定值小於中間值的數值,則在中間值的左半區繼續查詢;

若給定值大於中間值的數值,則在中間值的右半區繼續查詢;

不斷重複上述過程,直到查詢成功,或查詢失敗為止。

總共有n個元素時,接下來操作元素的剩餘個數為n,n/2,n/4,…n/2k,其中k就是迴圈的次數,由於n/2k取整後大於等於1,即令n/2^k=1,可得k=log2n,所以時間複雜度可以表示o(logn)。

查詢演算法之 二分查詢

這個例項給出了二叉搜尋演算法在9個元素的陣列arr中查詢某個目標值的過程01 2345 678 7 35812 1623 3355 例子1 查詢目標值2301 2345 678 7 35812 1623 3355 步驟1 索引範圍 0,9 索引first 0,last 9,mid 0 9 2 4 t...

查詢演算法之二分查詢

二分查詢,也是經常會問道的,以下寫法主要是針對已經排好序,且不會受到重複元素影響的陣列使用。二分查詢 param string find 要查詢的值 param array array 要查詢的陣列 return bool string function binarysearch find arra...

查詢演算法之二分查詢

採用二分查詢乙個有序陣列中的值,二分查詢使用與有序陣列,所以陣列必須得是有序的。二分查詢 給定乙個有序陣列,請使用盡可能高效的演算法查詢乙個目標值target,如果存在返回true,否則返回false public class binarysearch int target 55 system.ou...