[工学]数据结构于算法分析第8章Hash法.pptVIP

[工学]数据结构于算法分析第8章Hash法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]数据结构于算法分析第8章Hash法

再哈希法 同时构造多个不同的哈希函数: Hi=Rhi(key), i=1,2, …, n 当哈希地址Hi=Rh1(key) 发生冲突时,再计算Hi=Rh2(key) ……直到冲突不再产生。这种方法不易产生聚集,但增加了计算时间。 链地址法 基本思想是将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中, 因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。 例如,已知一组关键字(32,40, 36, 53, 16, 46, 71, 27, 42, 24, 49, 64), 哈希表长度为13,哈希函数为:H(key)=key%13,则用链地址法处理冲突的结果如下图所示。 本例的平均查找长度:ASL=(1×7+2×4+3×1)=1.5 链地址法处理冲突时的哈希表 链地址法处理冲突时的哈希表 建立公共溢出区 基本思想是将哈希表分为基本表和溢出表两部分,凡是与基本表发生冲突的元素一律填入溢出表。 第七章 查找 查找的基本概念 基于线性表的查找法 基于树的查找法 计算式查找法——哈希法 哈希函数的构造方法 处理冲突的方法 哈希表的查找过程 哈希法性能分析 要点小结 哈希表的查找过程 哈希表的查找过程与哈希表的创建过程是一致的。 所设要查找关键字为为key的元素,查找过程如下: 首先计算h0=hash(key)。 如果单元h0为空, 则所查元素不存在; 如果单元h0中元素的关键字为key,则找到所查元素; 否则重复下述解决冲突的过程: 按解决冲突的方法,找出下一个哈希地址hi; 如果单元hi为空,则所查元素不存在; 如果单元hi中元素的关键字为key,则找到所查元素。 哈希表的查找算法 #define m 哈希表长度 #define NULLKEY 代表空记录的关键字值 typedef int KeyType; /*假设关键字为整型*/ typedef struct { KeyType key; …… /*记录中其它分量按需求确定*/ …… }RecordType ; typedef RecordType HashTable[m];  int HashSearch( HashTable ht, KeyType K) {h0=hash(K); 哈希表的查找算法 if (ht[h0].key==NULLKEY) return(-1); else if (ht[h0].key==K) return (h0); else /* 用线性探测再散列解决冲突 */ {for (i=1; i=m-1; i++) {hi=(h0+i) % m; if (ht[hi ].key==NULLKEY) return (-1); else if (ht[hi].key==K) return (hi);} return (-1); } } 第八章 查找 查找的基本概念 基于线性表的查找法 基于树的查找法 计算式查找法——哈希法 哈希函数的构造方法 处理冲突的方法 哈希表的查找过程 哈希法性能分析 要点小结 哈希法性能分析 由于冲突的存在,哈希法仍需进行关键字比较,因此,仍需用平均查找长度来评价哈希法的查找性能。 哈希法中影响关键字比较次数的因素有三个: 哈希函数 处理冲突的方法 哈希表的装填因子α 哈希表的装填因子α的定义如下: ??????????????? α=哈希表中元素个数 / 哈希表的长度 α可描述哈希表的装满程度。显然,α越小,发生冲突的可能性越小,而α越大,发生冲突的可能性也越大。 哈希法性能分析 假定哈希函数是均匀的,则影响平均查找长度的因素只剩下两个: 处理冲突的方法 哈希表的装填因子α 以下按处理冲突的不同方法分别列出相应的平均查找长度: 线性探测再散列 伪随机探测再散列、二次探测再散列以及再哈希法 链址法 哈希法性能分析 线性探测再散列 查找成功时 查找失败时 伪随机探测再散列、二次探测再散列以及再哈希法 查找成功时 哈希法性能分析 查找失败时 链址法 查找成功时 查找失败时 哈希法性能分析 从以上讨论可知:哈希表的平均查找长度是装填因子α的函数,而与待散列元素数目n无关。因此,无论元素数目n有多大,都能通过调整

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档