哈希表总结

来源:互联网 发布:安卓纪元 矩阵潜袭 编辑:程序博客网 时间:2024/06/06 18:25

哈希表即为键值(哈希函数的自变量)到哈希值(哈希函数的函数值)的映射

哈希的两个关键点

1、哈希函数,适当的哈希函数会使查找效率提高

2、解决冲突,即不同键值对应相同的哈希值

 

哈希函数的方法

1)数值分析法

适用于:当键值的位数较多时,选择所有键值中数字分布比较均匀的即为选为键值

2)平方取中法

适用于:所给的所有键值的数字分布不是特别均匀的情况下,将键值平方后 ,使可选出分布比较均匀的位置当作键值

3)分段叠加法法

可用于键值较长时,具体分为移位法:将键值分为相等的几部分然后对应位相加;折叠法:同样是分为相同部分,相邻两部分以中心为轴,对称位进行相加(奇数部分为正序,偶数部分为逆序)

4)除留余数法



处理冲突的方法


opening hashing

即链地址法:将所有可能的哈希值作为头结点,建立一个头结点数组;当出现对应哈希值的键值时,就将其连接到对应哈希值的那一队链表中去



close hasing

及开放定址法:设置一个增量序列,当出现冲突时,在原先的基础上加上一个增量序列中的值,直至不发冲突为止

根据增量序列的不同有:1)线性探测再散列(di = 1,2,3,4,5,.....)缺点:容易造成非同义祠间的冲突,优点:只要空间足够,当进行插入时,一定可以找到一个位置进行插入

2)平方探测再散列(di = 1^2,-1^2,2^2,-2^2,........)缺点:效率会比较低,错过 了可以提前解决冲突的机会。


影响哈希表查找效率的因素:装填因子(元素的个数/哈希表的长度)

0 0
原创粉丝点击