一、常用的构造哈希函数的方法:
1.直接定址法;
H(key) = key || H(key) = a*key + b ;
2.数字分析法
3.平方取中法
取关键字平方后的中间几位作为哈希地址
4.折叠法
将关键字分割成位数相同的几部分,然后取这几部分的叠加和作为哈希地址
5.除留余数法(最常用的方法)
去关键字被某个不大于哈希表表厂m的数p除后所得的余数为哈希地址。即
H(key) = key MOD p, p<=m
6.随机数法
对于如何选择哈希函数,通常要考虑一下几点因素:
(1)计算哈希函数所需时间(包括硬件指令的因素);
(2)关键字的长度;
(3)哈希表的大小;
(4)关键字的分布情况;
(5)记录的查找频率。
二、处理冲突的方法
1.开放定址法
1.1线性探测再散列
1.2二次探测再散列
1.3伪随机再散列
2.再哈希法
3.链地址法
4.建立一个公共溢出区