《算法导论》笔记 第11章 11.4 开放寻址法

本文详细介绍了开放寻址法在散列表中的应用,包括删除操作和不同类型的探查序列,如线性探查、二次探查和双重散列。通过具体的例子展示了这些方法在插入关键字时的效果,并提出了开放寻址法中的HASH-DELETE和修改后的HASH-INSERT问题,以及讨论了在不同装载因子下,开放寻址法查找操作的期望探查数上界。
摘要由CSDN通过智能技术生成

【笔记】

开放寻址法:所有元素都存放在散列表里。当查找一个元素时,要检查所有的表项,直到找到所需的元素,或者最终发现该元素不在表中。

删除操作:在槽中置一个特定的值DELETED。因此在必须删除关键字的应用中,往往采用链接法解决碰撞。

计算开放寻址法中的探查序列:

线性探查:h(k,i) = (h'(k)+i) mod m, i = 0,1,...,m-1

二次探查:h(k,i) = (h'(k)+c1*i+c2*i^2) mod m

双重散列:h(k,i) = (h1(k)+i*h2(k)) mod m

双重散列是用于开放寻址法最好的方法之一,因为它所产生的排列具有随机选择的排列的许多特性。


【练习】

11.4-1 考虑将关键字10、22、31、4、15、28、17、88、59用开放寻址法插入到一个长度为m=11的散列表中,辅助散列函数为h(k)=k mod m。说明用线性探查、二次探查(c1=1,c2=3)以及双重散列h2(k)=1+(k mod (m-1))将这些关键字插入散列表的结果。

22 88 0 0 4 15 28 17 59 31 10

22 0 88 17 4 0 28 59 15 31 10

22 0 59 17 4 15 28 88 0 31 10


11.4-2 请写出HASH-DELETE的伪代码;修改HASH-INSERT,使之能处理特殊值DELETED。


<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值