2015_SHI_DS_哈希表.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2015_SHI_DS_哈希表

数据结构Data Structures石 振 锋2015年秋查找(集合)查找的基本概念静态查找表动态查找表哈希表§3 哈希表哈希表(Hash Tables) 也被称为散列表,是普通数组概念的推广。因为可以对数组进行直接寻址,故可以在O(1)时间内访问到数组的任意元素。§3 哈希表哈希表(Hash Tables) 当关键字全域比较小的时候,利用数组(直接寻址表)是一种简单有效的技术。§3 哈希表哈希表(Hash Tables)直接寻址技术存在的问题: 如果全域U很大,在计算机中存储大小为|U|的一张表T就有点不实际,甚至是不可能的。 实际的应用中,要存储的关键字集合K,相对U来说很小,因此分配给T的大部分空间会被浪费。§3 哈希表哈希表(Hash Tables) 给定关键字,期望通过计算,即利用哈希函数h(x)计算出关键字在表T中的位置。§3 哈希表哈希表(Hash Tables) 在直接寻址方式下,具有关键字k的数据元素,存放在槽k中。 在哈希方式下,具有关键字k的数据元素,存放在槽h(k) 中。其中h(x)是散列函数。 碰撞(collision)例如:对于如下 9 个关键字: {Zhao, Qian, Sun, Li, Wu, Chen, Han, Ye, Dai} 设哈希函数 f (key) = ?(Ord(关键字首字母) - Ord(‘A’) + 1) / 2? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Zhou Han Li Wu Ye Chen Qian Sun Zhao Dai 问题: 若添加关键字 Zhou,会出现什么情况 ? Zhou 从这个例子可见: 1) 哈希函数是一个映像,即:将关键字的集合映射到某个地址 集合上。它的设置很灵活,只要使得关键字的哈希函数值都 落在表长允许的范围之内即可; 2) 由于哈希函数是一个压缩映像,因此,在一般情况下,很容 易产生“冲突”现象,即:key1 ? key2,而 f (key1) = f (key2)。 这种具有相同函数值的关键字称为同义词。 3) 很难找到一个不产生冲突的哈希函数。一般情况下,只能 选择恰当的哈希函数,使冲突尽可能少地产生。 因此:在构造这种特殊的“查找表”时,除了需要选择一个“好”的哈希函数(其原则是尽可能地使任意一组关键字的哈希地址均匀地分布在整个地址空间中,即用任意关键字作为哈希函数的自变量其计算结果随机分布,以尽可能少产生冲突) ; 还需要找到一种“处理冲突”的方法。 §3 哈希表哈希表(Hash Tables)哈希表的定义 根据设定的哈希函数H(key)和所选中的处理冲突的方法建立的查找表。其基本思想是:以记录的关键字为自变量,根据哈希函数,计算出对应的哈希地址,并在此存储该记录的内容。 这一映像过程称为哈希造表或散列。 §3 哈希表哈希表(Hash Tables) 当对记录进行查找时,再根据给定的关键字,用同一个哈希函数计算出给定关键字对应的存储地址,随后进行访问。所以哈希表既是一种存储形式,又是一种查找方法,通常将这种查找方法称为哈希查找。 1. 直接定址法 2. 数字分析法 3. 平方取中法 4. 折叠法 5. 除留余数法 6. 随机数法 §3 哈希表哈希函数的构造方法 对数字关键字可有下列构造方法: 对非数字关键字,常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等0 1 2 3 4 5 6 7 8 9100300500700800900§3 哈希表直接定址法 取关键字或关键字的某个线性函数值为散列地址,即哈希函数为关键字的线性函数 H(key) = key 或者 H(key) = a ? key + b (其中a、b为常数) 例:关键码集合为{ 100,300,500,700,800,900 },选取哈希函数为 Hash(key)=key/100,画初存储结构(哈希表)§3 哈希表直接定址法 特点:地址集合的大小 = 关键字集合的大小。 优点:以关键码 key 的某个线性函数值为哈希地址, 不会产生冲突。缺点:要占用连续地址空间,空间效率低。 实际中能使用这种哈希函数的情况很少§3 哈希表数字分析法选用关键字的某几位组合成哈希地址。选用原则应当是:各种符号在该位上出现的频率大致相同。 适于关键字位数比哈希地址位数大,且可能出现的关键字事先知道的情况。 §3 哈希表数字分析法例:有一组(例如80

文档评论(0)

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

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

1亿VIP精品文档

相关文档