DS11_查找与散列结构资料.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本思想: 在记录的存储地址和它的关键字之间建立一个确定的对应关系;这样,不经过比较,一次存取就能得到所查元素的查找方法。即:通过简单计算直接得到数据的地址。 1) 哈希(Hash)函数是一个映象,即:将关键字的集合映射到某个地址集合上,它的设置很灵活,只要这个地址集合的大小不超出允许范围即可。 哈希函数可写成:addr(ai)=H(ki) ai是表中的一个元素 addr(ai)是ai的存储地址 ki是ai的关键字。 哈希表 关键字 集合 存储地址 集合 hash 2) 由于哈希函数是一个压缩映象,因此,在一般情况下,很容易产生“冲突”现象,即:key1? key2,而 f(key1) = f(key2)。 3) 很难找到一个不产生冲突的哈希函数。一般情况下,只能选择恰当的哈希函数,使冲突尽可能少地产生。 哈希表 1 2 3 51 52 年份 人数 1949 1950 1951 1999 2000 2000 2100 2200 4400 4420 例 某地区的人口统计表 H(年度)=年度-1948 哈希表 例 30个地区的各民族人口统计表 编号 地区 总人口 汉族 回族…... 1 北京 2 上海 …... …... 以编号作关键字, 构造哈希函数:H(key)=key H(1)=1 H(2)=2 以地区作关键字,取地区 名称第一个拼音字母的序号 作哈希函数:H(Beijing)=2 H(Shanghai)=19 H(Shenyang)=19 哈希表——应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址,这样构成的表叫哈希表。 哈希查找——又叫散列查找,利用哈希函数进行查找的过程叫哈希查找。 哈希表 哈希函数的构造方法 构造哈希函数的准则:使关键字经过哈希函数得到一个“随机的地址”,以便使一组关键字的哈希地址均匀地分布在逐个地址区间,从而减少冲突。 常用的构造方法: (1)直接定址法:取关键字或关键字的某个线性函数值为哈希地址,如年龄。 (2)数字分析法:假设关键字是以 r 为基的数,并且哈希表中可能出现的关键字都是事先知道的,则可取关键字的若干数位组成哈希地址 哈希表 常用的构造方法: (2)数字分析法:若事先知道关键字集合,且关键字的位数比哈希表的地址位数多,则可选取数字分布比较均匀的若干位作为散列地址。例如,有一组8位数字组成的关键字: 经过分析可知,前三位和第五位分布不均匀,所以,若表长为1000,则可取4、6、7位的数字作为哈希地址,若表长为100,则可取4、6与7、8位之和并舍去进位作为散列地址。 关键字 散列地址1 散列地址287107136 465 723 874 013 228 339 99 04 32 37 03 27 哈希表 (3)平方取中法:取关键字平方后的中间几位为哈希地址。 通常,要预先估计关键字的数字分布并不容易,要找数字均匀分布的位数更难。此时可采用平方取中法:即先通过求关键字的平方来扩大差别,再取其中的几位或其组合作为散列地址。 例如:一组关键字: (0100,0110,1010,1001,0111) 平方结果为: (0010000,0012100,1020100,1002001,0012321) 若表长为3位,则可取中间三位作为散列地址集: (100,121,201,020,123) 哈希表 (4)折叠法:若关键字位数较多,可将关键字分割成位数相同的几段(最后一段的位数可以不同),段的长度取决于哈希表的地址位数,然后将各段的迭加和(舍去进位)作为哈希地址。 例如,对于key=58242324169 582 423 241 + 69 [1]315 H(key)=315 移位迭加 582 324 241 + 96 [1]243 H(key)=243 间界迭加 哈希表 (5)除留余数法:选择一个适当的正整数P,用P

文档评论(0)

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

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

1亿VIP精品文档

相关文档