哈希函数的构造方法:
1、直接定址法
取关键字或者关键字的某个线性函数作为哈希地址。
2、数字分析法
3、平方取中法
4、折叠法
5、除留余数法
处理冲突的方法:
1、开放定址法
2、再哈希
3、链地址法
4、建立一个公共的溢出区
其中再哈希,就是使用另外一个不同的哈希函数再计算一次。
链地址法,在java中的哈希表的实现中就是使用的这种方法。
下面说一下开放定址法:
Hi=(H(key)+di) MOD m i=1,2,..,k(k<=m-1)
其中,H(key)称为哈希函数。m为哈希表的表长。di为增量序列。di可以有下列三种取法:
1、di=1,2,3,...,m-1,,称为线性探测再散列
2、di=1^2,-1^22^2,-2^2,3^2,...,k^2,-k^2(k<=m/2),称为二次探测再散列
3、di=伪随机数序列,称为伪随机探测再散列