用二次探测法建立hash表

假设哈希表长度为n,哈希函数为Hash(key)=key%n, key为关键码。
当Hash(key)相等时,则使用Hash(key) = (Hash(key) + d) % n,d为:1^2、-(1 ^2)、2 ^2、-(2 ^2)、3 ^2、-(3 ^2)…
例子:
设哈希表长为11,哈希函数为Hash (key)=key%11。存在关键码{43,7,29,22,16,92,44,8,19},采用二次探测法处理冲突,建立hash表。
由于哈希表长为11,则序号为0~10.
Hash(43)=43%11=10, 43地址为10
Hash(7)=7%11=7, 7地址为7
Hash(29)=29%11=8,29地址为8
Hash(22)=22%11=0,22地址为0
Hash(16)=16%11=5,16地址为5
Hash(92)=92%11=4,92地址为4
Hash(44)=44%11=0,由于地址0已存在22,所以Hash(44)=(0+1 ^2)%11=1,44地址为1
Hash(8)=8%11=8,由于地址8已存在29,所以Hash(8)=(8+1 ^2)%11=9,8地址为9
Hash(19)=19%11=8,由于地址8已存在29,所以Hash(19)=(8+1 ^2)%11=9,由于地址9已存在8,所以Hash(19)=(8-1 ^2)%11=7,由于地址7已存在7,所以Hash(19)=(8+2 ^2)%11=1,由于地址1已存在44,所以Hash(19)=(8-2 ^2)%11=4,由于地址4存在92,所以Hash(19)=(8+3 ^2)%11=6,19地址为6
在这里插入图片描述

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值