哈希表

Hash表

又称为哈希表、散列表、或是杂凑表,它是一种十分实用的查找技术,具有极高的查找效率。

Hash函数的构造方法

对于Hash函数的构造,没有特定的要求,所以方法很多,只是我们需要了解,什么样的哈希函数,才叫好的Hash函数,这样就便于我们根据实际情况构造合理的Hash函数。

a.直接定址法

去关键字火关键字的某个线性函数值为hash地址,即:
H(key)= key 或 H(key)=a * key + b

b.除余法

以关键码除以表元素总数后的得到的存储地址

c.基数转换法

将关键码看作是某个基数制上的整数,然后将其转换为另一基数制上的数。

d.平方取中法

先通过关键字的平方值扩大相近数的差别,然后根据表长度取中间的几位数作为数列的函数值,又因为一个乘积的中间几位数和乘积的每一位都相关,由此产生的散列地址较为均匀。

e.折叠法

把关键码分成多段,左边的段向右折,右边的向左折,然后将他们叠加。

f.移位法

将关键码分为多段,左边的段右移,右边的段左移,然后将他们叠加

g.机数法

选择一个随机函数,取关键码的随机函数值

处理冲突的方法

1.开放定址法(线性探查法和双散列函数法)

当冲突发生时,使用某种探查技术在散列中形成一个探序列,沿着改序列查找,直到找到关键字或一个开放的地址(地址单元为空)

线性探查法:

冲突后直接向下线性找一个新的空间存放

双散列函数法:

用两个散列函数来解决

2.拉链法

将一个散列表的每个节点增加一个指针字段,用于链接同义词的子表,链表中的节点都是同义词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值