数据结构第八章--查找安工大计算机学院.ppt

数据结构第八章--查找安工大计算机学院.ppt

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

8.1 基本概念 8.2 线性表的查找 8.3 树表查找 8.4 哈希查找;8.4 哈希表查找(散列法);散列函数: 使每个关键码都和结构中存储位置对应,这样的一个对应关系称为散列(哈希Hush)函数。 关键码 存储地址 碰撞:若key1?key2 ,h(key1)=h(key2). key1和key2称为同义词。 h(key)的值域所对应的地址空间称为基本区域。 发生碰撞时,同义词可以存放在基本区域中未被占用的单元,也可以存放到另开的区域中。 负载因子: 散列表中结点数 基本区域能容纳的结点数; 关键码经过散列函数得到一个随机地址,以便使一组关键码的散列地址均匀地分布在逐个地址区间中,从而减少冲突。 常用的散列函数有: 1.??? 数字分析法 2.??? 除余法 3.??? 折叠法 4. 中平方法 5. 基数转换法 ;1. 数字分析法 假设关键码是以r为基的数,并且哈希表中可能 现的关键码都是事先知道的,则可取关键码的若干数位组成散列地址。 Key h(key) 000319428 328 000718309 709 000829443 843 000758815 715 000919897 997 000310329 329 ;2. 除余法 取关键码被某个不大于散列表长度m的数p除后所得余数为散列地址。数p的选取:一般可选它为质数。 h(key)=(int)key % p; m=128, 258, 512, 1024 p=127, 251, 503, 1019 3. 折叠法 将关键码分割成几部分,然后取这几部分的叠加和作为地址。 key=582422241 58 | 2422 | 241 58 | 2422 | 241 8 5 5 8 1 4 2 2 4 1 2 4 2 2 2 4 2 2 1 1 0 8 4 2 7 2 1;4. 中平方法 先求出关键码的平方,然后取中间几位作为地址。 key=4731 (4731)2 = h(key)=382 5. 基数转换法 把关键码看成基数为r1的数,将它转换成基数为 r2的数,??数字分析法取中间几位作为散列地址。R1 和r2最好互素。例如,key=238075, r1=13, r2=10, (238075)13=2*135+3*134+8*133+7*13+5 =(841547)10 h(key)=4154;实际工作中需视情况的不同而采用不同的散列函 数,通常需要考虑的因素有: A. 计算哈希函数所需时间; B. 关键码的长度; C. 哈希表的大小; D. 关键码的分布情况; E. 记录的查找频率。 总之,是“杂凑”出来的。;1. 开地址法 在基本区域内形成一个探查序列 Hi = (H(key) + di)MOD m, i = 1, 2, …, k ( k ?m-1) 其中:m为表长,di为增量序列,可有多种取法: A.

您可能关注的文档

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档