网站大量收购独家精品文档,联系QQ:2885784924

哈希地址冲突.PPT

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈希地址冲突

基本思想:有冲突时就去寻找下一个空的哈希地址,只要哈希表足够大,空的哈希地址总能找到,并将数据元素存入。 1.开放定址法(开地址法) step1 取数据元素的关键字key,计算其哈希函数值(地址)。若该地址对应的存储空间还没有被占用,则将该元素存入;否则执行step2解决冲突。 step2 根据选择的冲突处理方法,计算关键字key的下一个存储地址。若下一个存储地址仍被占用,则继续执行step2,直到找到能用的存储地址为止。 步骤 线性探测法 二次探测法 伪随机探测法 哈希函数: Hi=(Hash(key)+di) mod m ( 1≤i m ) 其中:m为哈希表长度,di 为增量序列 关键码集为 {47,7,29,11,16,92,22,8,3}, 假设:哈希表表长为m=11; 哈希函数为Hash(key)=key mod 11 0 1 2 3 4 5 6 7 8 9 10 29 11 16 92 22 8 3 ① 47、7、11、16、92没有冲突 ② Hash(29)=7,有冲突,由H1=(Hash(29)+1) mod 11=8,哈希地址8为空,因此将29存入 ③ 3 连续移动了两次 线性探测法 ( di =1, 2, …, m-1) 内容 地址 47 7 线性探测法的特点 优点:只要哈希表未被填满,保证能找到一个空地址单元存放有冲突的元素。 解决方案:二次探测法 缺点:可能使第i个哈希地址的同义词存入第i+1个地址,这样本应存入第i+1个哈希地址的元素变成了第 i+2个哈希地址的同义词,……,产生“聚集”现象,降低查找效率。 二次探测法 关键码集为 {47,7,29,11,16,92,22,8,3}, 假设: 哈希函数为Hash(key)=key mod 11 Hi=(Hash(key)+di) mod m 其中:m为哈希表长度,m要求是某个4k+3的质数; di为增量序列 12,-12,22,-22,…,q2 8 29 7 16 92 47 3 22 11 0 1 2 3 4 5 6 7 8 9 10 ▲ Hash(3)=3,哈希地址冲突,由 H1=(Hash(3)+12) mod 11=4,仍然冲突; H2=(Hash(3)-12) mod 11=2,找到空的哈希地址,存入。 2.链地址法(拉链法) 基本思想:相同哈希地址的记录链成一单链表,m个哈希地址就设m个单链表,然后用用一个数组将m个单链表的表头指针存储起来,形成一个动态的结构 取数据元素的关键字key,计算其哈希函数值(地址)。若该地址对应的链表为空,则将该元素插入此链表; 步骤: 非同义词不会冲突,无“聚集”现象 链表上结点空间动态申请,更适合于表长不确定的情况 优点: 0 1 2 3 4 5 6 7 8 9 10 11 12 14 1 27 79 68 55 19 84 20 23 10 11 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 关键码集为 {19, 14, 23, 1, 68, 20, 84,27,55,11,10,79}, 设: 哈希函数为Hash(key)=key mod 13 哈希表的查找 给定k值 计算H(k) 此地址为空 关键字==k 查找失败 查找成功 按处理冲突 方法计算Hi Y N Y N 给定值与关键字比较 已知一组关键字(19,14,23,1,68,20,84,27,55,11,10,79) 哈希函数为:H(key)=key MOD 13, 哈希表长为m=16, 设每个记录的查找概率相等 (1) 用线性探测再散列处理冲突,即Hi=(H(key)+i) MOD m 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 14 1 68 27 55 19 20 84 79 23 11 10 1 2 1 4 3 1 1 3 9 1 1 3 H(19)=6 H(14)=1 H(23)=10 H(1)=1 冲突,H1=(1+1) MOD16=2 H(68)=3 H(20)=7 H(27)=1 冲突,H1=(1+1)MOD16=2

您可能关注的文档

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档