欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    数据结构散列表.ppt

    • 资源ID:3787957       资源大小:268KB        全文页数:34页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构散列表.ppt

    7.3 散列表的查找技术,7.3 散列表的查找技术,顺序查找、折半查找等。这些查找技术都是通过一系列的给定值与关键码的比较,查找效率依赖于查找过程中进行的给定值与关键码的比较次数。,在存储位置和关键码之间建立一个确定的对应关系,概 述,散列的基本思想:在记录的存储地址和它的关键码之间建立一个确定的对应关系。这样,不经过比较,一次读取就能得到所查元素的查找方法。,7.3 散列表的查找技术,关键码集合,ki,ri,H(ki),H,散列表:采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间称为散列表。,概 述,7.3 散列表的查找技术,关键码集合,ki,ri,H(ki),H,散列函数:将关键码映射为散列表中适当存储位置的函数。,概 述,7.3 散列表的查找技术,关键码集合,ki,ri,H(ki),H,散列函数,散列地址:由散列函数所得的存储位置。,概 述,7.3 散列表的查找技术,关键码集合,ki,ri,H(ki),H,散列函数,散列地址,例子,一组数:12,37,52,43,84,99散列函数为:H(k)=k%11散列表:长度为11,12,37,52,43,84,99,概 述,7.3 散列表的查找技术,散列既是一种查找技术,也是一种存储技术。,散列只是通过记录的关键码定位该记录,没有完整地表达记录之间的逻辑关系,所以,散列主要是面向查找的存储结构。,散列技术的关键问题:散列函数的设计。如何设计一个简单、均匀、存储利用率高的散列函数。冲突的处理。如何采取合适的处理冲突方法来解决冲突。,7.3 散列表的查找技术,概 述,冲突:对于两个不同关键码kikj,有H(ki)H(kj),即两个不同的记录需要存放在同一个存储位置,ki和kj相对于H称做同义词。,7.3 散列表的查找技术,概 述,散列函数,7.3 散列表的查找技术,设计散列函数一般应遵循以下原则:计算简单。散列函数不应该有很大的计算量,否则会降低查找效率。函数值即散列地址分布均匀。函数值要尽量均匀散布在地址空间,这样才能保证存储空间的有效利用并减少冲突。,1、散列函数直接定址法,散列函数是关键码的线性函数,即:,H(key)=a key+b(a,b为常数),例:关键码集合为10,30,50,70,80,90,选取的散列函数为H(key)=key/10,则散列表为:,10,30,50,70,80,90,适用情况?,事先知道关键码,关键码集合不是很大且连续性较好。,7.3 散列表的查找技术,散列函数为:,H(key)=key mod p,7.3 散列表的查找技术,2、散列函数除留余数法,如何选取合适的 p,产生较少同义词?,一般情况下,选p为小于或等于表长(最好接近表长)的最小素数。,适用情况?,除留余数法是一种最简单、也是最常用的构造散列函数的方法,并且不要求事先知道关键码的分布。,根据关键码在各个位上的分布情况,选取分布比较均匀的若干位组成散列地址。,例:关键码为8位十进制数,散列地址为2位十进制数,8 1 3 4 6 5 3 28 1 3 7 2 2 4 28 1 3 8 7 4 2 28 1 3 0 1 3 6 78 1 3 2 2 8 1 7 8 1 3 3 8 9 6 7,7.3 散列表的查找技术,3、散列函数数字分析法,适用情况:,能预先估计出全部关键码的每一位上各种数字出现的频度,不同的关键码集合需要重新分析。,7.3 散列表的查找技术,3、散列函数数字分析法,对关键码平方后,按散列表大小,取中间的若干位作为散列地址(平方后截取)。,7.3 散列表的查找技术,4、散列函数平方取中法,事先不知道关键码的分布且关键码的位数不是很大。,适用情况:,例:散列地址为2位,则关键码123的散列地址为:,(1234)21522756,将关键码从左到右分割成位数相等的几部分,将这几部分叠加求和,取后几位作为散列地址。,7.3 散列表的查找技术,5、散列函数折叠法,例:设关键码为2 5 3 4 6 3 5 8 7 0 5,散列地址为三位。,2 5 3 4 6 3 5 8 7+0 5 1 3 0 8 移位叠加,2 5 3 3 6 4 5 8 7+5 0 1 2 5 4 间界叠加,适用情况:,关键码位数很多,事先不知道关键码的分布。,1、处理冲突的方法开放定址法,由关键码得到的散列地址一旦产生了冲突,就去寻找下一个空的散列地址,并将记录存入。,如何寻找下一个空的散列地址?,7.3 散列表的查找技术,(1)线性探测法(2)二次探测法(3)随机探测法,(1)线性探测法,当发生冲突时,从冲突位置的下一个位置起,依次寻找空的散列地址。,对于键值key,设H(key)=d,闭散列表的长度为m,则发生冲突时,寻找下一个散列地址的公式为:Hi=(H(key)di)%m(di=1,2,m-1),7.3 散列表的查找技术,用开放定址法处理冲突得到的散列表叫闭散列表。,例:关键码集合为 47,7,29,11,16,92,22,8,3,散列表表长为11,散列函数为H(key)=key mod 11,用线性探测法处理冲突,则构造的散列表为:,47,7,29,11,16,92,29,22,22,8,8,3,3,3,3,堆积:在处理冲突的过程中出现的非同义词之间对同一个散列地址争夺的现象。,7.3 散列表的查找技术,(1)线性探测法,用线性探测法构造的散列表中查找算法伪代码,1.计算散列地址j;2.若htj=k,则查找成功,返回记录在散列表中的下标;否则3.若htj为空或将散列表探测一遍,则查找失败,转4;否则,j指向下一单元,转2;4.若整个散列表探测一遍,则表满,抛出溢出异常;否则,将待查值插入;,7.3 散列表的查找技术,int HashSearch1(int ht,int m,int k)int j=k%m;if(htj=k)return j;/没有发生冲突,比较一次查找成功 int i=(j+1)%m;while(i!=j)if(hti=k)return i;/发生冲突 if(hti=0)break;i=(i+1)%m;/向后探测一个位置 if(i=j)throw 溢出;else hti=k;return i;,7.3 散列表的查找技术,在线性探测法构造的散列表中查找算法C+描述,(2)二次探测法,当发生冲突时,寻找下一个散列地址的公式为:Hi=(H(key)di)%m(di=12,12,22,22,q2,q2且qm/2),7.3 散列表的查找技术,47,7,29,11,16,92,29,22,22,8,8,3,3,3,例:关键码集合为 47,7,29,11,16,92,22,8,3,散列表表长为11,散列函数为H(key)=key mod 11,用二次探测法处理冲突,则散列表为:,(2)二次探测法,7.3 散列表的查找技术,(3)随机探测法,当发生冲突时,下一个散列地址的位移量是一个随机数列,即寻找下一个散列地址的公式为:Hi=(H(key)+di)%m(di是一个随机数列,i=1,2,m-1),7.3 散列表的查找技术,基本思想:将所有散列地址相同的记录,即所有同义词的记录存储在一个单链表中(称为同义词子表),在散列表中存储的是所有同义词子表的头指针。,用拉链法处理冲突构造的散列表叫做开散列表。,设n个记录存储在长度为m的散列表中,则同义词子表的平均长度为n/m。,7.3 散列表的查找技术,2、处理冲突的方法拉链法(链地址法),例:关键码集合 47,7,29,11,16,92,22,8,3,散列函数为H(key)=key mod 11,用拉链法处理冲突,构造的开散列表为:,7.3 散列表的查找技术,在拉链法构造的散列表查找算法伪代码,1.计算散列地址j;2.在第j个同义词子表中顺序查找;3.若查找成功,则返回结点的地址;否则,将待查记录插在第j个同义词子表的表头。,7.3 散列表的查找技术,Node*HashSearch2(Node*ht,int m,int k)j=H(k);p=htj;while(p,7.3 散列表的查找技术,在拉链法构造的散列表查找算法C+描述,基本思想:散列表包含基本表和溢出表两部分(通常溢出表和基本表的大小相同),将发生冲突的记录存储在溢出表中。查找时,对给定值通过散列函数计算散列地址,先与基本表的相应单元进行比较,若相等,则查找成功;否则,再到溢出表中进行顺序查找。,7.3 散列表的查找技术,3、处理冲突的方法公共溢出区,例:关键码集合 47,7,29,11,16,92,22,8,3,散列函数为H(key)=key mod 11,用公共溢出区法处理冲突,构造的散列表为:,7.3 散列表的查找技术,0 1 2 3 4 5 6 7 8 910,基本表 溢出表,0 1 2 3 4 5 6 7 8 910,散列查找的性能分析,由于冲突的存在,产生冲突后的查找仍然是给定值与关键码进行比较的过程。在查找过程中,关键码的比较次数取决于产生冲突的概率。而影响冲突产生的因素有:(1)散列函数是否均匀(2)处理冲突的方法(3)散列表的装载因子=表中填入的记录数/表的长度,7.3 散列表的查找技术,查找成功时,查找不成功时,ASL,处理冲突方法,几种不同处理冲突方法的平均查找长度,7.3 散列表的查找技术,开散列表与闭散列表的比较,7.3 散列表的查找技术,

    注意事项

    本文(数据结构散列表.ppt)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开