哈希表查找

基本概念

       根据设定的哈希函数Hash(key)和所选中的处理冲突的方法,将一组关键字映像到一个有限的、地址连续的地址集(区间)上,并以关键字在地址集中的像作为相应记录在表中的存储位置,这种表被称为哈希表,这一映像的过程亦被称为哈希。
哈希法查找必须研究两个主要问题:
(1)构造一个计算简单而且冲突尽量少的哈希函数;
(2)确定一个解决冲突的办法。

构造哈希表的方法

1.直接定址法
       取关键字本身或关键字的某个线性函数值作为哈希表地址,即
Hash(key)=key 或 Hash(key)=a*key + b (a,b为常数)
2.数字分析法
       从关键字中选出分布较均匀的几位作为哈希函数的结果,即关键字的存储地址。
3.平均取中法
       将关键字先平方,然后取其中几位为哈希地址。
4.折叠法
       将关键字分割成位数相等的几部分(最后一部分位数可以不等),然后取这几部分的叠加和(舍去进位)作为哈希地址。折叠法又分移位叠加和间界叠加,移位叠加是将各部分的最低位对齐,然后相加;间界叠加是从一端向另一端沿分割线来回折叠,然后对齐相加。
5.除留余数法
找出一个尽可能大且不大于哈希表表长的合适的正整数p,为避免冲突,一般取p为素数,取关键字除以p作为哈希函数的值,即
       Hash(key)= key % p (p<=m,m为表的长度)
一般选p为小于或等于哈希表长度m的某个最大素数较好。
6.随机数法
取关键字的某个随机函数值作为它的哈希地址,即 Hash(key) = Random(key),式中,Random为随机函数。

你可能感兴趣的:(哈希表查找)