哈希算法
-
直接定址法:对键值进行线性变换得到哈希地址
-
数字分析法:找到数据中区别较大的部分,组成哈希地址
-
平方取中法:取键值平方后的中间几位作为哈希地址
-
折叠法:将键值分为几部分,将这几部分进行叠加得到哈希地址
-
除留取余法:键对于哈希表长进行取余,得到的结果作为哈希地址
哈希冲突处理方法
- 开放定址法:
如果冲突,在原来结果的基础上,进行+1,+2等的操作,找不冲突的位置。 缺点:不能随意删除节点,会影响其他节点的查找,只能标记为已删除节点。查找时,由于冲突的左右移动解决方法,也会影响查找速度
- 链地址法:
将冲突部分链接成一个链表。 简单。 但是当链表长度过长会一定程度影响查找速度。
- 再哈希法
冲突时,再用另一个哈希算法对于键进行哈希 速度较慢。而且如果再冲突还需再哈希。
- 公共溢出区
如果溢出区有冲突,也得耗费一定时间。