1. 程式人生 > >雜湊表 學習順序 及 個人心得

雜湊表 學習順序 及 個人心得

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為隨機函式。通常用於關鍵字長度不等時採用此法。 雜湊衝突: