除法散列發解決碰撞的散列表
今天學習了除法散列法解決散列表的碰撞。他的基本思路為:1. 用一個閥值作為除數,對要求散列值的key除以他,得到的結果就是該key要存放的位置。
2. 注意的是,這個除數一定要選擇好,不能太大,太大浪費了空間。也不能太小,太小碰撞太嚴重。一般選擇里2的p次冪最遠的質數。因為這樣的話散列的效果可能更好。具體論證我也不清楚。
3. 空間的選擇,只要除數定下來之后,一般空間就是除數這么大了。
4. 碰撞處理,萬一遇到碰撞怎么辦,我目前采用的是鏈表法處理碰撞,就是如果兩個key算出的值一樣。就把他們用鏈表的形式連接起來,然后再鏈接到他們的域中。這個最容易理解的方法了。
基本就這么多了,奉上源代碼:























































































































































































posted on 2009-05-06 20:19 shongbee2 閱讀(1354) 評論(2) 編輯 收藏 引用 所屬分類: 數據結構和算法