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