第8章 查找概要1.ppt

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

8.4.2 哈希函数的构造方法 3.平方取中法   取关键字平方后的中间几位为哈希地址。取的位数由表长决定。 key key2 H(key) 1101 1212201 212 1102 1214404 214 1200 1440000 440 2031 4124961 124 2134 4553956 553 例: 8.4.2 哈希函数的构造方法 4.折叠法   将关键字分割成位数相同的几部分(最后一部分的位数可不同),然后取这几部分的叠加和(舍去进位)作为哈希地址。  98765       +  4321        103086       H(key)=3086        移位叠加             98765   +  1234 99999  H(key)=9999   间界叠加  例:关键字key=987654321,把它转换为一个4位的散列地址。 常用在关键字位数多,而每一位上数字的分布又基本均匀的情况下。 8.4.2 哈希函数的构造方法 5.除留余数法(*)   取关键字被某个不大于哈希表表长m 的数 p 除后所得 余数 作为哈 希地址。     H(key)=key MOD p    为了尽可能少地发生冲突,通过取p为不大于表长且最接近表 长m的素数, 如表长为1000时,p 取值为997 。 Key H(key)=key MOD 997599543523943 例: 8.4.2 哈希函数的构造方法 6.随机数法  选择一个随机函数,取关键字的随机函数值为它的哈希地址。  H(key)=random(key),random为随机函数。 选取哈希函数时考虑的因素: 1)计算哈希函数所需时间 2)关键字的长度 3)哈希表的大小 4)关键字的分布情况 5)记录的查找频率 8.4.3 冲突的处理方法  选择合适的哈希函数,使用较大的哈希表可减少冲突,但不能避免冲突。    处理冲突:为产生冲突的关键字所在的记录找到一个空的哈希地址Hi。 8.4.3 冲突的处理方法 常用的处理冲突的方法: 1.开放定址法 Hi=(H(key)+di) MOD m  其中,H(key)为哈希函数,m为哈希表表长, di为增量序列。  线性再散列:di=1,2, … ,m-1;简单,但易造成“二次聚集”。  二次探测再散列:di=12,-12 ,22 ,-22 ,…,±k2   k≤ m/2 ;要求表长必须形如4j+3(j=1,2,…)的素数 。  伪随机探测再散列:di=伪随机数序列;需要选择一个伪随机函数产生伪随机数列。 例:关键字序列为{17 60 29 38},哈希表长度为11,哈希函数为H(key)=key MOD 11,用开放地址法处理冲突。 60 17 29 0 1 2 3 4 5 6 7 8 9 10 H1=(5+1)MOD 11=6 H2=(5+2)MOD 11=7 H3=(5+3)MOD 11=8 60 17 29 38 0 1 2 3 4 5 6 7 8 9 10 线性探测再散列法 38 60 17 29 0 1 2 3 4 5 6 7 8 9 10 二次探测再散列法 H1=(5+1)MOD 11=6 H2=(5-1)MOD 11=4 38   60 17 29 0 1 2 3 4 5 6 7 8 9 10 伪随机探测再散列法 H1=(5+9)MOD 11=3 H(38)=5 伪随机序列为9,… 8.4.3 冲突的处理方法 2.再哈希法   Hi=RHi(key) i=1,2,…,k    RHi是不同的哈希函数,即在同义词产生地址冲突时计算另一个哈希函数地址,直到冲突不再发生为止。 3.链地址法  将所有关键字同义词的记录存储在同一线性链表中,另用一个数组存储各链表的链头指针。  凡哈希地址为 i 的记录都插入到头指针为ChainHash[i]的链表中。同一同义词链中关键字有序。 例:已知一组关键字为(19 14 23 01 68 20 84 27 55 11 10 79),哈希表长为13,则按哈希函数H(key)=key MOD 13和链地址法处理冲突构造哈希表。 0 1 2 3 4 5 6 7 8 9 10 11 12 ∧ ∧   ∧ ∧   ∧ ∧   ∧ 01   14   27   79 ∧ 55   68 ∧ 19   84 ∧ 20 ∧ 10   23 ∧ 11 ∧ 8.4.3 冲突的处理方法 4.公共溢出区法  另建一个公共溢出区专门用来存放同义词

文档评论(0)

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

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

1亿VIP精品文档

相关文档