常用查詢演算法

2021-04-06 21:11:44 字數 748 閱讀 4329

查詢是在大量的資訊中尋找乙個特定的資訊元素,在計算機應用中,查詢是常用的基本運算,例如編譯程式中符號表的查詢。用關鍵字標識乙個資料元素,查詢時根據給定的某個值,在表中確定乙個關鍵字的值等於給定值的記錄或資料元素。在計算機中進行查詢的方法是根據表中的記錄的組織結構確定的。

順序查詢也稱為線形查詢,從資料結構線形表的一端開始,順序掃瞄,依次將掃瞄到的結點關鍵字與給定值k相比較,若相等則表示查詢成功;若掃瞄結束仍沒有找到關鍵字等於k的結點,表示查詢失敗。

二分查詢要求線形表中的結點按關鍵字值公升序或降序排列,用給定值k先與中間結點的關鍵字比較,中間結點把線形表分成兩個子表,若相等則查詢成功;若不相等,再根據k與該中間結點關鍵字的比較結果確定下一步查詢哪個子表,這樣遞迴進行,直到查詢到或查詢結束發現表中沒有這樣的結點。

分塊查詢也稱為索引查詢,把線形分成若干塊,在每一塊中的資料元素的儲存順序是任意的,但要求塊與塊之間須按關鍵字值的大小有序排列,還要建立乙個按關鍵字值遞增順序排列的索引表,索引表中的一項對應線形表中的一塊,索引項包括兩個內容:① 鍵域存放相應塊的最大關鍵字;② 鏈域存放指向本塊第乙個結點的指標。分塊查詢分兩步進行,先確定待查詢的結點屬於哪一塊,然後在塊內查詢結點。

雜湊表查詢是通過對記錄的關鍵字值進行運算,直接求出結點的位址,是關鍵字到位址的直接轉換方法,不用反覆比較。假設f包含n個結點,ri為其中某個結點(1≤i≤n),keyi是其關鍵字值,在keyi與ri的位址之間建立某種函式關係,可以通過這個函式把關鍵字值轉換成相應結點的位址,有:addr(ri)=h(keyi),addr(ri)為雜湊函式。

常用查詢演算法

include include include 順序表的查詢 順序表的查詢 平均o n 最好o 1 最差o n int sqsearch int r,int n,int key return 0 沒有查詢到v 有序表的查詢 交換值 void swap int r,int i,int j 獲取中間位置...

常用查詢演算法

順序查詢是在乙個已知無 或有序 序佇列中找出與給定關鍵字相同的數的具體位置。原理是讓關鍵字與佇列中的數從第乙個開始逐個比較,直到找出與給定關鍵字相同的數為止,它的缺點是效率低下。public static int sequencesearch int array,int des return 1 二...

常用的查詢演算法

1 mid low high 2 2 當k arr mid 時,low mid 1,並重複1 當k 當k arr mid 時,找到,結束。直到low high,還沒找到那麼說明該關鍵字不存在。核心 實現 演算法步驟 1 第一步確定查詢節點在那個表中的那一塊。2 第二步在確定的塊中找到該節點。1 雜湊...