b 樹
m階b樹:是滿足下列特性的樹:
(1) 樹中每個結點至多有m棵子樹;
(2) 若根結點不是終端結點,則至少有兩棵子樹;
(3) 除根結點外,其他非終端結點至少有 m/2(向上取整) 棵子樹;
(4)所有非終端結點都包含以下資料:
(n,a0,k1,a1,k2,…,kn,an)
其中,n(m/2(向上取整)- 1≤n≤m 1)為關鍵碼的個數;
ki(1≤i≤n)為關鍵碼,且ki<ki+1(1≤i≤n-1);
ai(0≤i≤n)為指向子樹根結點的指標,且指標ai所指子樹中所有結點的關鍵碼均小於ki+1大於ki。
(5)所有葉子結點都在同一層上,b樹是高平衡的。
b+樹
b+樹是b樹的變體,也是一種多路搜尋樹:
m階b+樹的結構定義如下:
(1)每個結點至多有m個子結點;
(2)每個結點(除根外)至少有ceiling(m/2)個子結點;
(3)根結點至少有兩個子結點;
(4)有k個子結點的結點必有k個關鍵碼。
m階b+樹:是滿足下列特性的樹:
⑴ 含有m個關鍵碼,每乙個關鍵碼對應一棵子樹。
⑵ 關鍵碼ki是它所對應的子樹的根結點中的最大(或最小)關鍵碼。
⑶ 所有終端結點中包含了全部關鍵碼資訊,以及指向關鍵碼記錄的指標。
⑷ 所有終端結點按關鍵碼的大小鏈在一起,形成單鏈表,並設定頭指標。
雜湊表(hash)的查詢技術
有衝突,降低了查詢效率,體現不出計算式查詢的優點
雜湊方法也不適用於範圍查詢
不能查詢最大值、最小值
也不可能找到在某一範圍內的記錄。
雜湊技術的關鍵問題:
⑴ 雜湊函式的設計。如何設計乙個簡單、均勻、儲存利用率高的雜湊函式。
⑵ 衝突的處理。如何採取合適的處理衝突方法來解決衝突。
直接定址法
雜湊函式是關鍵碼的線性函式,即:
h(key) = a * key + b (a,b為常數)
除留餘數法
雜湊函式為:h(key)=key mod p
一般情況下,選p為小於或等於表長(最好接近表長)的最小素數。
適用情況:
除留餘數法是一種最簡單、也是最常用的構造雜湊函式的方法,並且不要求事先知道關鍵碼的分布。
數字分析法
根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。
適用情況:
(1)事先知道關鍵碼的分布
(2)關鍵碼的分布均勻
平方取中法
對關鍵碼平方後,按雜湊表大小,取中間的若干位作為雜湊位址(平方後擷取。
例:雜湊位址為2位,則關鍵碼1234的雜湊位址為:(1234)²=1522756
適用情況:
事先不知道關鍵碼的分布且關鍵碼的位數不是很大。
衝突的處理
開放定址法線性探測法
當發生衝突時,從衝突位置的下乙個位置起,依次尋找空的雜湊位址。
對於鍵值key,設h(key)=d,閉雜湊表的長度為m,則發生衝突時,尋找下乙個雜湊
位址的公式為:
hi=(h(key)+di) % m (di=1,2,…,m-1)
堆積:在處理衝突的過程**現的非同義詞之間對同乙個雜湊位址爭奪的現象。
int hashsearch1(int ht[ ], int m, int k)
if (i==j) throw "溢位";
else ht[i]=k; //查詢不成功時插入
}
拉鍊法(鏈位址法)
基本思想:將所有雜湊位址相同的記錄,即所有同義詞的記錄儲存在乙個單鏈表中(稱為同義詞子表),在雜湊表中儲存的是所有同義詞子表的頭指標。
用拉鍊法處理衝突構造的雜湊表叫做開雜湊表。
設n個記錄儲存在長度為m的雜湊表中,則同義詞子表的平均長度為n / m。
在拉鍊法構造的雜湊表查詢演算法——偽**
計算雜湊位址j;
在第j個同義詞子表中順序查詢;
若查詢成功,則返回結點的位址;
否則,將待查記錄插在第j個同義詞子表的表頭。
node*hashsearch2(node*ht[ ], int m, int k)
}
雜湊查詢的效能分析
由於衝突的存在,產生衝突後的查詢仍然是給定值與關鍵碼進行比較的過程。
在查詢過程中,關鍵碼的比較次數取決於產生衝突的概率。而影響衝突產生的因素有:
(1)雜湊函式是否均勻
(2)處理衝突的方法
(3)雜湊表的裝載因子
α=表中填入的記錄數/表的長度
B樹索引 hash索引
索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。對於乙個表中幾百萬行資料來說,如果不使用索引,每次查詢都需要遍歷一遍所有的行,從而找到所需要的資料,平均查詢效率o n 如果使用了索引,在查詢時會先找索引,快速定位到磁碟位置,然後再去讀出該行的資料,效率大大...
多路查詢樹 B數 B 樹 B 樹 原理
1 二叉樹需要載入到記憶體的,如果二叉樹的節點少,沒有什麼問題,但是如果二叉樹的節點很多 此如1億 就存在如下問題 2 問題1 在構建二叉樹時,需要多次進行 o操作海量資料存在資料庫或檔案中 節點海量,構建二叉樹時,速度有影響 3 問題2 節點海量,也會造成二叉樹的高度很大,會降低操作速度 1 在二...
多路查詢樹 B樹
多路查詢樹 multi way search tree 其每乙個結點的孩子數可以多於兩個,且每乙個結點處可以儲存多個元素。在這裡,我們講解它的4種特殊形式 2 3樹 2 3 4樹 b樹和b 樹。2 3樹是這樣的一顆多路查詢樹 其中的每乙個結點都具有兩個孩子 我們稱它為2結點 或三個孩子 我們稱它為3...