雜湊表 學習順序 及 個人心得
阿新 • • 發佈:2019-01-01
1.直接定址法
取關鍵字或者關鍵字的某個線性函式為Hash地址,即address(key)=a*key+b;如知道學生的學號從2000開始,最大為4000,則可以將address(key)=key-2000作為Hash地址。
2.平方取中法
對關鍵字進行平方運算,然後取結果的中間幾位作為Hash地址。假如有以下關鍵字序列{421,423,436},平方之後的結果為{177241,178929,190096},那麼可以取{72,89,00}作為Hash地址。
3.摺疊法
將關鍵字拆分成幾部分,然後將這幾部分組合在一起,以特定的方式進行轉化形成Hash地址。假如知道圖書的ISBN號為8903-241-23,可以將address(key)=89+03+24+12+3作為Hash地址。
4.除留取餘法
如果知道Hash表的最大長度為m,可以取不大於m的最大質數p,然後對關鍵字進行取餘運算,address(key)=key%p。在這裡p的選取非常關鍵,p選擇的好的話,能夠最大程度地減少衝突,p一般取不大於m的最大質數。
5.數字分析法
假設關鍵字是以r為基的數,並且雜湊表中可能出現的關鍵字都是事先知道的,則可取關鍵字的若干數位組成雜湊地址。
例如有某些人的生日資料如下:
年. 月. 日
75.10.03
85.11.23
86.03.02
86.07.12
85.04.21
96.02.15
經分析,第一位,第二位,第三位重複的可能性大,取這三位造成衝突的機會增加,所以儘量不取前三位,取後三位比較好
6.隨機數法
選擇一個隨機函式,取關鍵字的隨機函式值為它的雜湊地址,即
H(key)=random(key) ,其中random為隨機函式。通常用於關鍵字長度不等時採用此法。
雜湊衝突: