線性表的查詢法 折半查詢(思路與實現)

2021-08-20 19:03:05 字數 1060 閱讀 5808

首先宣告乙個概念:查詢的基本方法可以分為兩大類,即比較式查詢法和計算機式。其中比較式查詢法有可以分為基於線性表的查詢法和基於樹的查詢法,而計算查詢法也稱為也稱為hash(雜湊)查詢法。

而基於線性表的查詢法具體可分為順序查詢法、折半查詢法以及分塊查詢法

現在要講的就是折半查詢法(二分查詢法、二叉判定數查詢法)

折半查詢,也稱二分查詢、二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列已經為空,則表示找不到指定的元素。這種搜尋演算法每一次比較都使搜尋範圍縮小一半,其時間複雜度是o(logn)。

注意的是計算中間位置時不應該使用(high + low) / 2的方式,因為加法運算可能導致整數越界,這裡應該使用以下三種方式之一:low + (high – low) / 2或low + (high – low) >> 1或(low + high) >>> 1(>>>是邏輯右移,是不帶符號位的右移)。

遞迴實現:

public class binsrch ;

while(true)else

}} //遞迴

public static int binarysearch2(int data, int low, int high, int k)else if(data[mid] < k)else

} return -1;

}}

非遞迴實現:

public class binsrch ;

while(true)else

} }

//非遞迴

public static int binarysearch(int data, int k)

if(data[mid] > k)else

} return -1;

}}

線性表的查詢法 順序查詢法(思路與實現)

首先宣告乙個概念 查詢的基本方法可以分為兩大類,即比較式查詢法和計算機式。其中比較式查詢法有可以分為基於線性表的查詢法和基於樹的查詢法,而計算查詢法也稱為也稱為hash 雜湊 查詢法。查詢 是最常見的資料操作之一,資料結構核心運算之一,其重要性不言而喻。順序查詢是人們最熟悉的查詢策略,對於小規模的資...

基於線性表的查詢法

順序結構資料型別的定義 define maxsize 10 typedef struct record typedef struct recordlist 順序查詢演算法思想 在表的一端設定乙個稱為 監視哨 的附加單元,存放要查詢元素的關鍵字。從表的另一端開始查詢,如果在 監視哨 找到要查詢元素的關...

查詢元素(線性表實訓)

相關知識 由於鍊錶結點都是動態記憶體分配得到的,在記憶體中不是連續儲存,沒法使用二分法之類的演算法來實現資訊檢索,但可以使用順序查詢的方法。順序查詢需要遍歷整個鍊錶,逐個檢查每個結點是否滿足條件。程式中的printlist函式已實現了遍歷功能,可以參照其來實現查詢函式。其中printlist函式的實...