課程:《程序設計與數據結構》
班級: 1723
姓名: 方藝雯
學號: 20172314
實驗教師:王志強
測試日期:2018年10月19日
必修/選修: 必修編程
直接定址法數據結構
取關鍵字的某個線性函數爲散列地址,Hash(Key)= Key 或 Hash(Key)= A*Key + B,A、B爲常數。dom
除留餘數法函數
設散列表中容許的地址數爲m,取一個不大於m,但接近或者等於m的質數p做爲除數,按照哈希函數:Hash(key) = key % p ,即對p取餘數。測試
平方取中法設計
假設關鍵字是1234,那麼它的平方就是1522756,再抽取中間的3位就是227做爲散列地址;再好比關鍵字是4321,那麼它的平方就是18671041,抽取中間的3位就能夠是671或者710用做散列地址。blog
摺疊法排序
摺疊法是將關鍵字從左到右分割成位數相等的幾部分(注意:後一部分位數不夠時能夠短些),而後將這幾部分疊加求和,並按散列表表長,取後幾位做爲散列地址。比 如:關鍵字是9876543210,散列表表長爲三位,咱們將它分紅四組987|654|321|0|,而後將它們疊加求987+654+321+0=1962,再求後3位獲得散列地址爲962。有時可能 這還不可以保證分佈均勻,不妨從一段向另外一端來回摺疊後對齊相加。好比將987和321反轉,再與654和0相加,編程789+654+123+0=1566,此時的散列地址爲566。博客
隨機數法數學
選擇一個隨機函數,取關鍵字的隨機函數值爲它的哈希地址,即H(key) = random(key),其中 random爲隨機數函數。
數學分析法
分析一組數據,好比一組員工的出生年月日,這時咱們發現出生年月日的前幾位數字大致相同,這樣的話,出現衝突的概率就會很大,可是咱們發現年月日的後幾位表示月份和具體日期的數字差異很大,若是用後面的數字來構成散列地址,則衝突的概率會明顯下降。所以數字分析法就是找出數字的規律,儘量利用這些數據來構造衝突概率較低的散列地址。
具體解題步驟如圖:
上課聽得不仔細,沒有分清楚這幾種方法,但如今對錯誤的認識很明晰,補博客也是很是有用的!