常見的哈希算法與碰撞算法


Adblocker
 
 
 
 

常見的哈希算法與碰撞算法

哈希算法

  • 直接定址法:直接以關鍵字k或者k加上某個常數(k+c)作為哈希地址。
  • 數字分析法:提取關鍵字中取值比較均勻的數字作為哈希地址。
  • 除留余數法:用關鍵字k除以某個不大於哈希表長度m的數p,將所得余數作為哈希表地址。
  • 分段疊加法:按照哈希表地址位數將關鍵字分成位數相等的幾部分,其中最后一部分可以比較短。然后將這幾部分相加,舍棄最高進位后的結果就是該關鍵字的哈希地址。
  • 平方取中法:如果關鍵字各個部分分布都不均勻的話,可以先求出它的平方值,然后按照需求取中間的幾位作為哈希地址。
  • 偽隨機數法:采用一個偽隨機數當作哈希函數

 

解決碰撞算法

  • 開放定址法
    • 開放定址法就是一旦發生了沖突,就去尋找下一個空的散列地址,只要散列表足夠大,空的散列地址總能找到,並將記錄存入。
  • 鏈地址法
    • 將哈希表的每個單元作為鏈表的頭結點,所有哈希地址為i的元素構成一個同義詞鏈表。即發生沖突時就把該關鍵字鏈在以該單元為頭結點的鏈表的尾部。
  • 再哈希法
    • 當哈希地址發生沖突用其他的函數計算另一個哈希函數地址,直到沖突不再產生為止。
  • 建立公共溢出區
    • 將哈希表分為基本表和溢出表兩部分,發生沖突的元素都放入溢出表中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM