《数据结构散列表》PPT课件

《数据结构散列表》PPT课件

ID:45436212

大小:268.00 KB

页数:34页

时间:2019-11-13

《数据结构散列表》PPT课件_第1页
《数据结构散列表》PPT课件_第2页
《数据结构散列表》PPT课件_第3页
《数据结构散列表》PPT课件_第4页
《数据结构散列表》PPT课件_第5页
资源描述:

《《数据结构散列表》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、7.3散列表的查找技术7.3散列表的查找技术顺序查找、折半查找等。这些查找技术都是通过一系列的给定值与关键码的比较,查找效率依赖于查找过程中进行的给定值与关键码的比较次数。查找操作要完成什么任务?待查值k确定k在存储结构中的位置我们学过哪些查找技术?这些查找技术的共性?在存储位置和关键码之间建立一个确定的对应关系能否不用比较,通过关键码直接确定存储位置?概述散列的基本思想:在记录的存储地址和它的关键码之间建立一个确定的对应关系。这样,不经过比较,一次读取就能得到所查元素的查找方法。7.3散列表的查找技术关

2、键码集合kiriH(ki)…………H散列表:采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间称为散列表。概述7.3散列表的查找技术关键码集合kiriH(ki)…………H散列表数组散列函数:将关键码映射为散列表中适当存储位置的函数。概述7.3散列表的查找技术散列表关键码集合kiriH(ki)…………H散列函数数组散列地址:由散列函数所得的存储位置。概述7.3散列表的查找技术散列表关键码集合kiriH(ki)…………H散列函数散列地址下标数组例子一组数:12,37,52,43,84,99散列函

3、数为:H(k)=k%11散列表:长度为11012345678910123752438499概述7.3散列表的查找技术散列技术仅仅是一种查找技术吗?散列既是一种查找技术,也是一种存储技术。散列只是通过记录的关键码定位该记录,没有完整地表达记录之间的逻辑关系,所以,散列主要是面向查找的存储结构。散列是一种完整的存储结构吗?散列技术的关键问题:⑴散列函数的设计。如何设计一个简单、均匀、存储利用率高的散列函数。⑵冲突的处理。如何采取合适的处理冲突方法来解决冲突。7.3散列表的查找技术概述冲突:对于两个不同关键码k

4、i≠kj,有H(ki)=H(kj),即两个不同的记录需要存放在同一个存储位置,ki和kj相对于H称做同义词。7.3散列表的查找技术概述ri关键码集合ki…………H(ki)kjH(kj)散列函数7.3散列表的查找技术设计散列函数一般应遵循以下原则:⑴计算简单。散列函数不应该有很大的计算量,否则会降低查找效率。⑵函数值即散列地址分布均匀。函数值要尽量均匀散布在地址空间,这样才能保证存储空间的有效利用并减少冲突。1、散列函数——直接定址法散列函数是关键码的线性函数,即:H(key)=akey+b(a,b为常数

5、)例:关键码集合为{10,30,50,70,80,90},选取的散列函数为H(key)=key/10,则散列表为:0123456789103050708090适用情况?事先知道关键码,关键码集合不是很大且连续性较好。7.3散列表的查找技术散列函数为:H(key)=keymodp7.3散列表的查找技术2、散列函数——除留余数法如何选取合适的p,产生较少同义词?一般情况下,选p为小于或等于表长(最好接近表长)的最小素数。适用情况?除留余数法是一种最简单、也是最常用的构造散列函数的方法,并且不要求事先知道关键码

6、的分布。根据关键码在各个位上的分布情况,选取分布比较均匀的若干位组成散列地址。例:关键码为8位十进制数,散列地址为2位十进制数813465328137224281387422813013678132281781338967①②③④⑤⑥⑦⑧7.3散列表的查找技术3、散列函数——数字分析法适用情况:能预先估计出全部关键码的每一位上各种数字出现的频度,不同的关键码集合需要重新分析。7.3散列表的查找技术3、散列函数——数字分析法对关键码平方后,按散列表大小,取中间的若干位作为散列地址(平方后截取)。7.3散列表

7、的查找技术4、散列函数——平方取中法事先不知道关键码的分布且关键码的位数不是很大。适用情况:例:散列地址为2位,则关键码123的散列地址为:(1234)2=1522756将关键码从左到右分割成位数相等的几部分,将这几部分叠加求和,取后几位作为散列地址。7.3散列表的查找技术5、散列函数——折叠法例:设关键码为25346358705,散列地址为三位。253463587+05───1308移位叠加253364587+50───1254间界叠加适用情况:关键码位数很多,事先不知道关键码的分布。1、处理冲突的方法

8、——开放定址法由关键码得到的散列地址一旦产生了冲突,就去寻找下一个空的散列地址,并将记录存入。如何寻找下一个空的散列地址?7.3散列表的查找技术(1)线性探测法(2)二次探测法(3)随机探测法(1)线性探测法当发生冲突时,从冲突位置的下一个位置起,依次寻找空的散列地址。对于键值key,设H(key)=d,闭散列表的长度为m,则发生冲突时,寻找下一个散列地址的公式为:Hi=(H(key)+di)%m(di=1,2,…,m-1)7

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。