Hash衝突解決

hash衝突

解決方法:

  • 開放定址法
    • 線性探測再散列
    • 二次探測再散列,也叫平方探測再散列
    • 僞隨機探測再散列
  • 再哈希法
  • 鏈地址法
  • 建立公共溢出區

開放定址法也稱再散列,假設容量爲c, 當前hash值爲d,則:
線性探測再散列:依次探測d+1,d+2…c-1,0,1,2,d-1
平方探測再散列:依次探測d+12,d-12,d+22,d-22
僞隨機探測再散列:隨機序列3,2,5 依次d+3,d+2.d+5

再哈希:
這種方法是同時構造多個不同的哈希函數,當哈希地址Hi=RH1(key)發生衝突時,再計算Hi=RH2(key)……,直到衝突不再產生。這種方法不易產生聚集,但增加了計算時間。

公共溢出區:這種方法的基本思想是:將哈希表分爲基本表和溢出表兩部分,凡是和基本表發生衝突的元素,一律填入溢出表。

哈希表裝填因子定義爲:α= 填入表中的元素個數 / 哈希表的長度
裝填因子越小,衝突的機會越小,但空間越浪費。

平方探測

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章