Hash冲突处理方法:

405 阅读1分钟

哈希算法

  • 直接定址法:对键值进行线性变换得到哈希地址

  • 数字分析法:找到数据中区别较大的部分,组成哈希地址

  • 平方取中法:取键值平方后的中间几位作为哈希地址

  • 折叠法:将键值分为几部分,将这几部分进行叠加得到哈希地址

  • 除留取余法:键对于哈希表长进行取余,得到的结果作为哈希地址

哈希冲突处理方法

  • 开放定址法:

如果冲突,在原来结果的基础上,进行+1,+2等的操作,找不冲突的位置。 缺点:不能随意删除节点,会影响其他节点的查找,只能标记为已删除节点。查找时,由于冲突的左右移动解决方法,也会影响查找速度

  • 链地址法:

将冲突部分链接成一个链表。 简单。 但是当链表长度过长会一定程度影响查找速度。

  • 再哈希法

冲突时,再用另一个哈希算法对于键进行哈希 速度较慢。而且如果再冲突还需再哈希。

  • 公共溢出区

如果溢出区有冲突,也得耗费一定时间。