数据结构散列表精品文稿.ppt





《数据结构散列表精品文稿.ppt》由会员分享,可在线阅读,更多相关《数据结构散列表精品文稿.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构散列表第1 页,本讲稿共34 页7.3 散列表的查找技术顺序查找、折半查找等。这些查找技术都是通过一系列的给定值与关键码的比较,查找效率依赖于查找过程中进行的给定值与关键码的比较次数。查找操作要完成什么任务?待查值k确定k 在存储结构中的位置我们学过哪些查找技术?这些查找技术的共性?在存储位置和关键码之间建立一个确定的对应关系能否不用比较,通过关键码直接确定存储位置?第2 页,本讲稿共34 页概 概 述 述散列的基本思想:散列的基本思想:在记录的存储地址和它的关键码之 在记录的存储地址和它的关键码之间建立一个确定的对应关系。这样,不经过比较,一 间建立一个确定的对应关系。这样,不经过比
2、较,一次读取就能得到所查元素的查找方法。次读取就能得到所查元素的查找方法。7.3 散列表的查找技术关键码集合ki riH(ki)H第3 页,本讲稿共34 页散列表:散列表:采用散列技术将记录存储在一块 采用散列技术将记录存储在一块连续 连续的存储 的存储空间中,空间中,这块连续的存储空间 这块连续的存储空间称为散列表。称为散列表。概 概 述 述7.3 散列表的查找技术关键码集合ki ri H(ki)H散列表数组第4 页,本讲稿共34 页散列函数:散列函数:将关键码映射为散列表中适当存 将关键码映射为散列表中适当存储位置的 储位置的函数。函数。概 概 述 述7.3 散列表的查找技术散列表关键码集
3、合ki riH(ki)H散列函数数组第5 页,本讲稿共34 页散列地址:散列地址:由散列函数 由散列函数所得的存储位置 所得的存储位置。概 概 述 述7.3 散列表的查找技术散列表关键码集合ki riH(ki)H散列函数散列地址下标数组第6 页,本讲稿共34 页例子l 一组数:12,37,52,43,84,99l 散列函数为:H(k)=k%11l 散列表:长度为110 1 2 3 4 5 6 7 8 9 1012 37 52 43 84 99第7 页,本讲稿共34 页概 概 述 述7.3 散列表的查找技术散列技术仅仅是一种查找技术吗?散列既是一种查找技术,也是一种存储技术。散列只是通过记录的关
4、键码定位该记录,没有完整地表达记录之间的逻辑关系,所以,散列主要是面向查找的存储结构。散列是一种完整的存储结构吗?第8 页,本讲稿共34 页散列技术的关键问题:散列技术的关键问题:散列函数的设计。如何设计一个简单、均匀、存储 散列函数的设计。如何设计一个简单、均匀、存储利用率高的散列函数。利用率高的散列函数。冲突的处理。如何采取合适的处理冲突方法来解决 冲突的处理。如何采取合适的处理冲突方法来解决冲突。冲突。7.3 散列表的查找技术概 概 述 述第9 页,本讲稿共34 页冲突:冲突:对于两个不同关键码 对于两个不同关键码k ki i k kj j,有,有H H(k ki i)H H(k kj
5、j),即两个不同的记录 即两个不同的记录需要存放在同一个存储位置 需要存放在同一个存储位置,k ki i和 和k kj j相对于 相对于H H称做 称做同义词 同义词。7.3 散列表的查找技术概 概 述 述 ri关键码集合ki H(ki)kjH(kj)第10 页,本讲稿共34 页散列函数 散列函数7.3 散列表的查找技术设计散列函数一般应遵循以下原则:设计散列函数一般应遵循以下原则:计算 计算简单 简单。散列函数不应该有很大的计算量,否。散列函数不应该有很大的计算量,否则会降低查找效率。则会降低查找效率。函数值即散列地址分布 函数值即散列地址分布均匀 均匀。函数值要尽量均匀。函数值要尽量均匀散
6、布在地址空间,这样才能保证存储空间的有效利 散布在地址空间,这样才能保证存储空间的有效利用并减少冲突。用并减少冲突。第11 页,本讲稿共34 页1 1、散列函数、散列函数 直接定址法 直接定址法散列函数是关键码的线性函数,即:H(key)=a key+b(a,b为常数)例:关键码集合为10,30,50,70,80,90,选取的散列函数为H(key)=key/10,则散列表为:0 1 2 3 4 5 6 7 8 910 30 50 70 80 90适用情况?事先知道关键码,关键码集合不是很大且连续性较好。7.3 散列表的查找技术第12 页,本讲稿共34 页散列函数为:H(key)=key mod
7、 p 7.3 散列表的查找技术2 2、散列函数、散列函数 除留余数法 除留余数法如何选取合适的 p,产生较少同义词?一般情况下,选p 为小于或等于表长(最好接近表长)的最小素数。适用情况?除留余数法是一种最简单、也是最常用的构造散列 除留余数法是一种最简单、也是最常用的构造散列函数的方法,并且不要求事先知道关键码的分布。函数的方法,并且不要求事先知道关键码的分布。第13 页,本讲稿共34 页根据关键码在各个位上的分布情况,选取分布比较均匀的若干位组成散列地址。例:关键码为8位十进制数,散列地址为2位十进制数8 1 3 4 6 5 3 28 1 3 7 2 2 4 28 1 3 8 7 4 2
8、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 3、散列函数、散列函数 数字分析法 数字分析法第14 页,本讲稿共34 页适用情况:能预先估计出全部关键码的每一位上各种数字出现的频度,不同的关键码集合需要重新分析。7.3 散列表的查找技术3 3、散列函数、散列函数 数字分析法 数字分析法第15 页,本讲稿共34 页对关键码平方后,按散列表大小,取中间的若干位作为散列地址(平方后截取)。7.3 散列表的查找技术4 4、散列函数、散列函数 平方取中法 平方取中法事先不知道关键码的分布且关键码的位数不是很大。适用情况:例:散
9、列地址为2位,则关键码123的散列地址为:(1234)21522756第16 页,本讲稿共34 页将关键码从左到右分割成位数相等的几部分,将这几部分叠加求和,取后几位作为散列地址。7.3 散列表的查找技术5 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 间界叠加适用情况:关键码位数很多,事先不知道关键码的分布。第17 页,本讲稿共34 页1 1、处理冲突的方法、处理冲突的方法 开放定址法 开放定址法由
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 列表 精品 文稿

限制150内