开发者社区> 问答> 正文

任何哈希函数基本都无法彻底避免碰撞,简述下常见的解决碰撞的方法

任何哈希函数基本都无法彻底避免碰撞,简述下常见的解决碰撞的方法

展开
收起
huc_逆天 2021-01-08 14:35:53 884 0
1 条回答
写回答
取消 提交回答
  • 技术架构师 阿里云开发者社区技术专家博主 CSDN签约专栏技术博主 掘金签约技术博主 云安全联盟专家 众多开源代码库Commiter

    常见的解决碰撞的方法有以下几种:

    • 开放定址法:
      • 开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。
    • 链地址法
      • 将哈希表的每个单元作为链表的头结点,所有哈希地址为i的元素构成一个同义词链表。即发生冲突时就把该关键字链在以该单元为头结点的链表的尾部。
    • 再哈希法
      • 当哈希地址发生冲突用其他的函数计算另一个哈希函数地址,直到冲突不再产生为止。
    • 建立公共溢出区
      • 将哈希表分为基本表和溢出表两部分,发生冲突的元素都放入溢出表中。
    2021-01-08 14:36:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JAVA反射原理以及一些常见的应用 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载