第七章 查詢

2022-08-22 00:00:17 字數 1878 閱讀 7894

第七章——查詢

一、查詢的基本概念有:

(1)查詢表

(2)關鍵字

(3)查詢

(4)動態查詢表和靜態查詢表

(5)平均查詢長度

二、線性表的查詢

1、順序查詢

(1)資料型別定義

typedef keytype int;//

這個根據具體情況去定義;在這裡定義為int;

typedef

struct

elemtype;

typedef

struct

sstable;

view code

(2)順序查詢

int

search_seq(sstable st,keytype key)

}

view code

2、折半查詢(順序儲存切表中關鍵字有序)

其**為

int search_bin(sstable st,keytype key) //

在順序表st中順序查詢關鍵字等於key的資料

元素。若找到,則函式值為該元素在表中的位

置,若找不到則為0

return0;

}

view code

三、樹表的查詢

1、二叉排序樹的查詢:

bstnode*   search(bstree t ,keytype x)  //

定義函式

view code

2、平衡二叉樹:左子樹和右子樹的深度之差的絕對值不超過1;    左子樹和右子樹也是平衡二叉樹。

3、b-樹和b+樹: b-樹解決了資料量大時的查詢,而b+樹則在b-樹的基礎上解決了區間查詢問題。

四、雜湊表的查詢

1、主要研究問題

(1)如何構造雜湊函式

(2)如何處理衝突

2、好的雜湊函式的規則

(1)函式計算要簡單,每一關鍵字只能由乙個雜湊位址與之對應

(2)函式的值域須在表長的範圍內,計算出的雜湊位址的分布應均勻,盡可能減少衝突

3、方法:

①數字分析法——必須明確知道所有關鍵字每一位上的各種數字的分布情況。實際應用:同意出版社的圖書,isbn前幾位相同,用數字分析法時,排除isbn的前幾位

②平方取中法——適用於 不了解關鍵字的所有情況,或難於直接從關鍵字中找到取值比較分散的幾位 的情況

③摺疊法——雜湊位址位數較少,關鍵字位數較多,且難於直接從關鍵字中找到取值比較分散的幾位

④除留取餘法——h(key) = key%p    p一般取小於表長的最大質數  

實際應用過程中,衝突很難完全避免處理衝突的方法:

① 開放位址法  hi=(h(key)+di)%m

ⅰ 線性探測法  di=1,2,3,……,m-1

ⅱ 二次探測法  di=1²,-1²,2²,-2²,3²,……,+k²,-k²  (k<=m/2)

ⅲ 偽隨機探測法     注意將造表時的隨機序列記錄,用於查表

② 鏈位址法

把具有相同雜湊位址的記錄放在同乙個單鏈表中,m個雜湊位址就有m個單鏈表,同時用ht[0…m-1]存放鍊錶的頭指標,凡是雜湊位址為i的記錄都以結點方式插入到以ht[i]為頭節點的單鏈表中

五、總結:

這個章節的難度並不大,更注重於邏輯上的分析,只要能將各種問題分好類,然後用恰當的方法去解決,就不會有什麼大的問題。在學習中遇到最大的問題就是概念越來越多了,可能會因此混淆,然後對自己的記憶產生影響。對於之前的目標,我感覺現在自己打**的能力有所提公升,希望以後的能力能更進一步。

第七章 查詢

1 在雜湊表中,所謂同義詞就是具有相同雜湊位址的兩個元素。2分 f 我覺得本題應該是錯的 首先應該兩個不同元素,然後是得到同一雜湊位址 2 即使把2個元素雜湊到有100個單元的表中,仍然有可能發生衝突。2分 t 本題主要是考察雜湊 hash 函式是可以改變的,衝突的選擇是根據函式的選取 3 將m個元...

第七章 查詢技術

第7章 查詢技術 學習重點 折半查詢的過程及效能分析 二叉排序樹的插入 刪除和查詢操作 平衡二叉樹的調整方法 雜湊表的構造和查詢方法 各種查詢技術的時間效能及對比。學習難點 二叉排序樹的刪除操作 平衡二叉樹的調整方法 閉雜湊表的刪除演算法。7.1 概述 7.11 查詢的基本概念 在查詢問題中,通常將...

python第七章 python教程(第七章)

字典和集合 字典是python中唯一,乙個對映型別 如何建立乙個字典,如下 dict dict 滲透 網路安全 怎麼理解字典呢?現實生活中的字典可以通過首字母進行查詢要查詢的漢子,python也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...