Hash(哈希)的本意是杂凑,哈希函数是一种映像,因此哈希函数的设定很灵活;一般情况下,冲突只能尽可能的减少而不能避免。建造哈希表时,不仅要设定一个好的哈希函数,还要设定一种处理冲突的办法。
构造方法:
(1) 直接地址法;取关键字或者关键字的某个线性函数值为哈希地址;
H(key) = a* key + b ;
(2) 数字分析法
(3) 平方取中法
取关键字平方后的中间几位;
(4) 折叠法
(5) 除数留余法
处理冲突的方法:
(1) 开放地址法:按顺序放在后面空的地方
(2) 再哈希法,如果有冲突,计算另一个哈希函数的地址
(3) 链地址法:记录在同一个线性链表中