大話資料結構筆記 查詢

2021-08-13 21:25:30 字數 3159 閱讀 5467

查詢就是根據給定的某個值,在查詢表中確定乙個其關鍵字等於給定值的資料元素(或記錄)。

查詢表是由同一型別的資料元素(或記錄)構成的集合。

關鍵字(key)是資料元素中某個資料項的值。

若此關鍵字可以唯一的表示乙個記錄,則稱此關鍵字為主關鍵字(primary key)

對於那些可以識別多個資料元素(或記錄)的關鍵字,我們稱為次關鍵字(secondary key)

動態查詢表(dynamic search table):在查詢過程中同時插入查詢表中不存在的資料元素,或者從查詢表中刪除已經存在的某個資料元素。

針對線性表進行查詢的操作是靜態查詢表。

順序查詢(sequential search)又叫線性查詢,是最基本的查詢技術,他的查詢過程是:從表中第乙個(或最後乙個)記錄開始,逐個進行記錄的關鍵字和給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄;如果直到最後乙個(或第乙個)記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢不成功。

半折查詢(binary search)技術又稱為二分查詢

在有序表中,取中間記錄作為物件,於給定值比較,根據結果在子分類中在取中間記錄比較,直到找到記錄。

插值查詢(interpolation search):是根據要查詢的關鍵字key於查詢表中最大最小記錄的關鍵字比較後的查詢方法,其核心就在於插值的計算公式(key-a[low])/(a[high]-a[low])

恩,挺複雜

索引就是把乙個關鍵字與對應的記錄相關鏈的過程。

線性索引就是將索引向集合組織為線性結構,也稱為索引表。

對於稠密索引這個索引表來說,索引項一定是按照關鍵碼有序的排列。

分塊有序,是把資料集的記錄分成了若干塊,並且這些塊需要滿足兩個條件:

分塊索引的索引項結構分三個專案:

分塊索引表中查詢分為兩步:

說白了就是根據屬性值查詢記錄。

結構:

記錄號表儲存具有相同次關鍵字的所有記錄的記錄號(可以是指向記錄的指標或者該記錄的主鍵)。

這樣的索引方法就是倒排索引(inverted index)

因為需要根據屬性去找記錄,所以叫倒排。

二叉排序樹(binary sort tree)又稱二叉查詢樹,它或者是一顆空樹,或者是具有下列性質的樹。

二叉樹是以鏈結的方式儲存,保持了鏈結儲存結構在執行插入或刪除操作是不需要移動元素的優點。

平衡二叉樹(self-balancing search tree 或 height-balanced binary search tree),是一種二叉排序樹,其中每個節點的左子樹和右子樹的高度差最多等於1.

是一種高度平衡的二叉排序樹。

將二叉樹上結點的左子樹深度減去右子樹深度的值稱為平衡因子bf(balance factor)。

距離插入結點最近的,且平衡因子的絕對值大於1的結點為跟的子樹,我們稱為最小不平衡子樹。

多路查詢樹(muitl-way search tree),其每個結點的孩子數可以多於兩個,且每個結點處可以儲存多個元素。

由於 它是查詢樹,所有元素之間存在某種特定的排序關係。

2-3樹:

- 其中的每乙個結點都具有兩個孩子(我們稱它為2結點)或三個孩子(我們稱為3結點)。

- 乙個2結點包含乙個元素和兩個孩子(或沒有孩子)。

- 乙個3結點包含一大一小兩個元素和三個孩子(或沒有孩子)。

就是2-3樹的概念,包括了4結點的使用,乙個4結點包含大中小三個元素和四個孩子(或沒有孩子)。

一種平衡的多路查詢樹。

結點最大的孩子數目稱為b樹的階(order)。

b+樹和b樹的區別:

雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f(key)。查詢時,根據這個確定的對應關係找到給定值key的對映f(key),若查詢集合中存在這個記錄,則必定在f(key)的位置上。

我們把這種對應關係f稱為雜湊函式,又稱為雜湊(hash)函式。

採用雜湊技術將記儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為雜湊表或雜湊表(hash table)。

雜湊技術最適合的求解問題是查詢與給定值相等的記錄。

雜湊函式的要求:

直接定址法

取關鍵字的某個線性函式值為雜湊位址。

f(key) = a*key+b
數字分析法

適合關鍵字是位數較多的數字

抽取出關鍵字的一部分來計算雜湊函式。

適合關鍵字位數較大,且事先知道關鍵字的若干位分布均勻。

平方取中法

將關鍵字平方然後取中間的幾位作為雜湊位址。

適合不知道關鍵字分布,而且位數不是很大的情況。

摺疊法將關鍵字從左至右分為位數相等的幾段,然後疊加求和,再根據雜湊表的表長取後幾位作為雜湊位址。

除留餘數法

最常用的構造雜湊函式的方法。

f(key)=key

mod p (p<=m)

mod是取模(求餘數)的意思。

方法的關鍵在於取合理的p避免產生同義詞。

根據之前的經驗,若雜湊表表長為m,通常p為小於或等於表長(最好接近m)的最小質數或不包含小於20質因子的合數。

隨機數法

f

(key)=random

(key)

關鍵字長度不等時,採用這個方法比較合適。

開放定址法

我們把解決衝突的開放定址法稱為線性探測法

本來都不是同義詞卻需要爭奪乙個位址的情況叫做堆積

再雜湊函式法

就是當第一種雜湊函式存在衝突的時候換一種雜湊方式進行計算。

鏈位址法

把同義詞存在單鏈表中,依次查詢。

公共溢位區法

就是單獨規定出乙個溢位區域(溢位表)來記錄衝突的記錄。

《大話資料結構》筆記

第一章 1.程式設計的實質是對確定的問題選擇乙個好的資料結構,加上設計一種好的演算法。2.資料元素 是組成資料的 有一定意義的基本單位,在計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以自若干個資料項組成,資料項是資料不可分割的最小單位。3.資料結構分為邏輯結構和物理結構。4.邏輯結構分為以...

大話資料結構筆記1資料結構緒論

1 資料結構 是相互之間存在一種或多種特定關係的資料元素的集合 兩個前提 1 可以輸入到計算機中 2 能被電腦程式處理 3 資料元素 是組成資料的 有一定意義的基本單位,在計算機中通常作為整體處理,也被稱為記錄。4 資料項 乙個資料元素可以由若干個資料項組成,資料項是資料不可分割的最小單位。5 資料...

《大話資料結構》之分段查詢

我所謂的分段查詢包括 二分查詢 插值查詢 fibonacci查詢。三者都是不斷的縮小查詢範圍的查詢方法,只是在每次縮小多少範圍上有所區別。二分查詢 最簡單,每次一刀切,切一半,相對於其他兩種方法顯得很籠統,但是適配性不錯,沒有特殊限制。int binary search int a,int n,in...