資料結構 查詢

2022-02-27 05:46:01 字數 1956 閱讀 8662

1.查詢的相關概念

查詢:在n個記錄裡,尋找關鍵字等於目標k的過程,唯一匹配資料資料元素的資料項稱為主關鍵字,其餘資料項稱為次關鍵字。

平均查詢長度:反映統計意義上的多次查詢的平均查詢長度。

查詢的方法:線性查詢

2.線性查詢(順序查詢)

從記錄起始開始,逐個匹配記錄資訊,直到尋到目標關鍵字,若到最後仍未有相關資訊,進行提示輸出。

//順序查詢

int seqsearch(int r,int n,int k)

說明:若返回n表明查詢不成功。

鏈式儲存結構:

效能分析:

3.對分查詢(拆半查詢)

針對有序表的一種查詢方式,先比較中間記錄關鍵字資訊,若匹配則輸出,大於中間記錄,則查詢後半區間,若小於中間記錄,則查詢上半區間,由此遞迴查詢,直到獲得匹配資訊。

對分查詢

int binsearch(int r,int n,int k)

return(0);

}

效能分析:asl = log2(n+1) + 1

優點是平均查詢長度小,但是需要是順序表,適用於建立後不需要多加改變同時需要大量查詢操作的順序表。

4.分塊查詢(索引順序查詢)

把所有關鍵字分塊,並且後面的關鍵字的值均大於前一塊,快內的關鍵字保持無序。查詢過程是先使用順序查詢或對分查詢確定關鍵字塊,再在塊內進行順序查詢。效能介於順序查詢和對分查詢之間。

5.二叉排序樹查詢

將待查資訊與根節點關鍵字進行比較,匹配則輸出,小於則進入左子樹,大於則進入右子樹,依次迴圈查詢。

int bstsearch(node *t,int k)

else return(0);

}

6.雜湊查詢

通過對給定值進行一定運算,直接求得與指定值資訊匹配的關鍵字的位置。

雜湊函式、雜湊位址、雜湊表、裝填係數(a=n/m,一般為0.65-0.85)、非數值關鍵字的內部碼、衝突(不同關鍵字的系統雜湊位址)、同義詞

6.1雜湊查詢的幾種技術

6.1.1數字分析法

適合靜態資料,關鍵字已知,分析數字的分布,刪除不均勻的數字,再根據儲存空間決定數字的數目。

6.1.2平方取中法

關鍵字平方,選取其中幾位作為雜湊位址

6.1.3除留餘數法

對關鍵字取模(餘數)作為雜湊位址

6.1.4摺疊法

將關鍵字拆分成幾段,除了最後一段每段長度均相等,再將各段相加作為雜湊位址。包括移位摺疊(欄位左靠齊後相加)和邊界摺疊(偶數字段倒排,最後欄位右考)兩種。

6.2解決衝突的方法

6.2.1線性探測再雜湊

線性表空間為t[m],雜湊函式為h,衝突時另乙個記錄的位址公式為 dj+1=(d1+j) % m  (j=1,2,…,s,s≥1),其中d1=h(key)。即在衝突時,以線性的方式從下乙個雜湊位址開始探測,直到查到下乙個空的儲存位址。若乙個迴圈還沒有找到空間,說明位址已滿。

linesearch(t,k,m)

} return(j);

}

缺點:易造成關鍵字聚集,增加查詢時間。

6.2.2平方探測再雜湊

改善線性探測的缺點,避免關鍵字的聚集。

6.2.3隨機探測再雜湊

6.2.4鏈位址法

在雜湊表中設定乙個由m個指標分量組成的一位陣列,凡雜湊位址為i的記錄都插入到頭指標為st[i]的鍊錶中,適用於造表前無法確定記錄個數的情況。 

chnsearch(st,m,k)

查詢 資料結構

分類 資料結構與演算法 c c 2012 07 24 16 17 614人閱讀收藏 舉報幾種查詢演算法 順序查詢,折半查詢,分塊查詢,雜湊表 一 順序查詢的基本思想 從表的一端開始,向另一端逐個按給定值kx 與關鍵碼進行比較,若找到,查詢成功,並給出資料元素在表中的位置 若整個表檢測完,仍未找到與k...

資料結構 查詢

查詢 searching 也稱 檢索,查表,就是在大量的資訊集中尋找乙個特定的資訊元素。查詢就是根據 給定的關鍵字值,在 查詢表中確定乙個關鍵字等於給定的 記錄或資料元素。若存在這樣的資料元素,則稱查詢成功的,否則查詢不成功。查詢是許多重要的電腦程式中 最耗費時間的部分,查詢演算法的優劣密切關係著查...

資料結構 查詢

一.靜態查詢表 靜態查詢表是僅對查詢表進行查詢操作,而不能改變其中資料的線性表,可以是基於陣列的順序儲存或以線性鍊錶儲存。靜態查詢表主要有順序表 有序順序表和索引順序表三種。1.順序查詢 函式模型 int seqsearch element list,int searchnum,int n 2.折半...