知識要點:
線性索引結構、倒排表、靜態搜尋樹的結構和特點;
b樹的結構;(b-樹,b+樹)
雜湊的實現原理和各種操作的實現演算法。(hash表,平均查詢長度(成功、失敗))
通過此函式得出的p稱為雜湊位址。
儲存的值就是關鍵字key。)
)☆雜湊函式的構造方法:(數字分析法、平方取中法、摺疊法、除留餘數法)
常用的就是除留餘數法,function(key)=key%p
key為所要儲存的關鍵字、p為乙個不大於雜湊表長度的數,一幫情況下p取不大於表長的最大質數。
函式原型:function(key)=(function(key)+d)%m,key為關鍵字、m為雜湊表長、d為遞增量
當d=1時--》線性探測法,當d=1,-1,4,-4,...k*k,-k*k(k<=m/2)時--》二次探測法,當d=偽隨機數時--》偽隨機探測法
二次聚集(堆積):處理同義詞衝突過程中有增添了非同義詞衝突。(處理衝突時的方法缺陷引起了聚集現象)
思想把具有相同雜湊位址的關鍵字放在同乙個鍊錶中。m個雜湊位址對應著m個單鏈表。
☆☆☆雜湊表查詢效能的分析以及平均查詢長度:
查詢的影響因素(雜湊函式、處理衝突的方法、雜湊表的填裝因子)
1.填裝因子a的定義(雜湊表裝滿的程度):
a=已填充的記錄數/雜湊表長度,a越小發生衝突的可能性就越小、a越大發生衝突的可能性就越大。
(記憶)不同處理衝突方法的平均查詢長度:平均查詢長度的大小與記錄個數n無關,雜湊列表的填裝因子有關。
線性探測法:增量為1;成功:1/2 (1+1/(1-a)) 失敗:1/2 (1+1/(1-a)^2)
二次探測法:增量正負交替,按照平方進行;成功:-1/a ln(1-a) 失敗:1/(1-a)
(在已知平均查詢成功長度和查詢表的儲存元素個數可以求出雜湊表長度)
2.平均查詢長度:(在查詢概率相同的情況下)
查詢成功:
查詢成功平均比較次數=各個關鍵字的比較次數之和/關鍵字個數,
asl(success)=1/n(c1+c2+.....+cn) cn為查詢到第n個記錄所需要進行比較的次數,n為表中記錄個數。
查詢失敗:
查詢失敗對應的兩種情況。1)查詢單元為空null。2)按照處理衝突的方法探測一遍之後仍未找到。
假設雜湊函式取值的個數為r,則0--r-1相當於有r個查詢失敗的入口,從每個入口進入到失敗為止,其關鍵字的比較次數
就是與該入口對應的查詢失敗的查詢長度。
asl(default)=1/r(c1+c2+.....+cr) cr為雜湊函式取值為r時查詢失敗比較次數,r為雜湊函式取值個數。
例題:使用雜湊函式h(key)-key%11,將資料加入雜湊表中,
採用線性探測法(增長因子d為1):下標0
1234
5678
910雜湊值33113
1234
3827
22比較次數11
1341
28查詢成功的平均比較次數:(1*4+3+4+2+8)/8=21/8;
b-樹定義:要麼為空樹、要麼為滿足下列性質的m叉樹;
1)樹中至多每個結點有m個子樹;
2)如果根結點不是葉子結點,則根結點至少有兩顆子樹;
3)除了根結點以外的其他非終端結點至少有m/2上取整顆子樹;
4)所有的葉子結點必然在同一層次上,而且不攜帶有資訊,通常稱為失敗結點;
5)所有非終端結點至多有m-1個關鍵字;
性質:平衡(所有葉子結點均在同一層次上)、有序(結點內部關鍵字大小有序)、多路(m叉樹);
總結:m叉樹,每個結點最多有m-1個關鍵字;至少有m/2上取整-1個關鍵字;
(結點數k,(m/2)-1<=k<=m-1)
樹的最大分支數(關鍵字的個數+1)決定了該樹的階數;
b-樹的查詢類似於分塊查詢和順序查詢:查詢順序從根結點開始,由上至下查詢關鍵字所在結點的位置,在每個結點內部
採用順序查詢的方式查詢關鍵字,如果查到葉子結點則表明查詢失敗。
b-樹的插入:(由上到下查詢插入結點位置)
在最底層某個非終端結點新增乙個關鍵字,如果插入後此結點關鍵字個數小於等於m-1則插入成功;
如果大於m-1則將此結點以中間關鍵字為界限一分為二,並將中間關鍵字移入雙親結點上,如果雙親結點已滿,
則按照同樣的方法進行**;
b-樹的刪除:1)被刪關鍵字所在結點內關鍵字數目不小於m/2上取整,則直接去掉與其對應的指標即可(直接刪除)
2)被刪關鍵字所在結點關鍵字數目等於m/2上取整減1,而與其相鄰的右(左)兄弟結點中的關鍵字個數
大於m/2上取整減1,則將其兄弟結點中的最大(最小)的關鍵字上移至雙親結點中,而將雙親節點中
而將雙親結點中大於(小於)且緊靠該上移關鍵字的關鍵字下移至被刪關鍵字所在的結點位置。
3)被刪關鍵字所在結點和其相鄰兄弟結點的關鍵字數目均小於m/2上取整減1。假設該結點有左右兄弟,
且其右兄弟結點位址由雙親結點中的指標p所指,則在刪除關鍵字之後,它所在結點中剩餘關鍵字
和指標,加上雙親結點中的關鍵字k一起合併到,p所指的兄弟結點中去(若沒有右兄弟,則合併到左兄弟中)
b-樹的應用:磁碟管理系統的目錄管理、資料庫系統中的索引組織管理;
b+樹的定義:1)有n顆子樹結點含有n個關鍵字;
2)所有葉子結點中包含了全部關鍵字資訊,以及指向含這些關鍵字記錄的指標,且葉子結點本身
關鍵字的大小自小而大順序連線;
3)非終端結點可以看成索引部分,結點中僅含有其子樹(根結點)中最大(最小)的關鍵字;
資料結構 雜湊
裝填因子 key的個數與表長的比值。雜湊表查詢成功的平均查詢長度,查詢失敗的平均查詢長度都是期望,期望怎麼求,平均查詢長度就怎麼求。雜湊表這裡有兩種實現方式 線性開型定址雜湊,鍊錶雜湊。1.線性開型定址雜湊 陣列實現,資料個數不大於表長,放乙個元素時,若發生衝突,則順次線性掃瞄直到找到乙個空位。2....
資料結構 雜湊
關鍵 不比較關鍵碼,直接搜尋得到需要的數。特點 與搜尋樹不一樣,雜湊結構元素的儲存位置與關鍵碼直接對應,可以不用進行比較遍歷。如圖,建立乙個陣列,把a 4 中的資料按特定的規則儲存到相應的位置,比如a i n,到時候搜尋資料的時候可以按照同樣的規律直接找到這個位置,如果這個位置有數,則存在。比如按照...
資料結構 雜湊
將元素的儲存位置和該元素的關鍵碼通過某種函式建立一一對應的關係,構造出來的儲存結構稱之為雜湊表,轉換時借助的函式稱之為雜湊函式,在理想情況下,根據關鍵碼搜尋元素時可以不經過任何比較,一次性從表中查詢到所要搜尋的元素 但是在通過雜湊函式進行元素儲存位置確立的時候會出現,不同元素的關鍵碼通過雜湊函式計算...