8.4 计算式查找法—哈希法 其它名字: 散列法 杂凑法 关键字地址计算法 相应的表称为: 哈希表 散列表 杂凑表 基本思想: 首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。 创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元; 以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=f(k),从而达到按关键字直接存取元素的目的。 设哈希表 HT[0..9], B = 10(10个存储单元)。则按哈希函数得到的哈希表如图所示。 当关键字集合很大时,关键字值不同的元素可能会映像到哈希表的同一个地址上,即k1≠k2,但H(k1)=H(k2),这种现象称为冲突。 冲突不可避免! 只能通过改进哈希函数的性能来减少冲突。 哈希法包含两方面: 如何构造哈希函数 如何处理冲突 哈希函数的构造方法 构造原则: ①函数本身便于计算 ; ②计算出来的地址分布均匀,即对任一关键字k,f(k) 对应不同地址的概率相等,目的是尽可能减少冲突。 数字分析法 平方取中法 分段叠加法 除留余数法(常用) 伪随机数法 数字分析法 如果事先知道关键字集合,并且每个关键字的位数比哈希表的地址码位数多时,可以从关键字中选出分布较均匀的若干位,构成哈希地址。 数字分析法 例:有80个记录,关键字为8位十进制整数d1d2…d8,如哈希表长度取为100,则哈希表的地址空间为0~99。 假设已知各关键字中d4与d7的值分布较均匀,那么可定义哈希函数为: H(key)=H(d1d2…d8)=d4d7。 如:H=43 H=06 平方取中法 当无法确定关键字中哪几位分布较均匀时,可以先求出关键字的平方值,然后按需要取平方值的中间几位作为哈希地址。 平方取中法 例:假设把英文字母在字母表中的位置序号作为该英文字母的内部编码。 则字母K的内部编码为11,E的内部编码为05,A的内部编码为01,B的内部编码为02,由此组成的字“KEBA”的内部代码 行后得122157778355001。 取出中间位置(即第7位到第9位)作为该关键字哈希地址,即: H(“KEBA”)=778 分段叠加法 这种方法是按哈希表地址位数将关键字分成位数相等的几部分(最后一部分可以较短),然后将这几部分相加,舍弃最高进位后的结果就是该关键字的哈希地址。 具体方法有: 折叠法 移位法 分段叠加法 例:某元素的关键字值key=12360324711202065,把该关键字分成3位一段,舍去最低的两位65。 伪随机数法 采用一个伪随机函数做哈希函数,即: h(key)=random(key)。 除留取余数法 假设哈希表长为m,p为小于等于m的最大素数,则哈希函数为: H(k)=k%p 其中%为模p取余运算。 除留取余数法 例:已知待散列元素为(18,75,60,43,54,90,46),表长m=10,p=7,则有 除留取余数法 为减少冲突,可取较大的m值与p值,如m=p=13,结果如下: 待散列元素为(18,75,60,43,54,90,46) 所以,对待散列元素 (18,75,60,43,54,90,46),取m=p=13,根据以下的哈希函数得出的哈希地址,存储如下: 处理冲突的方法 开放定址法(再散列法) 线性探测再散列(常用) 二次探测再散列 伪随机探测再散列 再哈希法 链地址法(常用) 建立公共溢出区 开放定址法(再散列法) 当关键字key的哈希地址p= H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。 这种方法有一个通用的再散列函数形式: Hi=(H(key)+di)% m i=1,2,…,n H(key)为哈希函数,m 为表长,di称为增量序列。 di的取值方式不同,相应的再散列方式也不同。 开放定址法(再散列法) 根据再散列函数形式: Hi=(H(key)+di)% m i=1,2,…,n 中di的取值方式不同,相应的再散列方式主要有以下三种: 线性探测再散列 二次探测再散列 伪随机探测再散列 线性探测再散列 di=1,2,3,…,m-1 其特点是:冲突发生时,顺序查看表中下一单元,直到找出一个空单元或查遍全表。 例:哈希表长度m=12,哈希函数为H(key)=key%11,则H(47)=3,H(26)=4,H(60)=5,存储如下: 线性探测再散列 哈希函数为H(key)=key%11,关键字69应存在哪? 二次探测再散列 di=12,-
您可能关注的文档
最近下载
- 智慧物流与供应链管理-刘伟华-第7章.pptx VIP
- 2026中国贸促会直属单位招聘工作人员10人备考题库附答案详解(实用).docx VIP
- 公路路基路面养护培训ppt课件.pdf VIP
- 办公文秘面试常见问题.pdf VIP
- 第三章第二节分子晶体与共价晶体第二课时.pptx VIP
- AI Edge需求、愿景与潜在关键技术白皮书-2026.pdf VIP
- 中职学校资产管理存在的问题及对策建议思考.docx VIP
- 智慧物流与供应链管理-刘伟华-第12章.pptx VIP
- 一种超亲水不锈钢填料改性方法.pdf VIP
- 2025年高考政治课本知识背诵默写清单:逻辑与思维(背诵版).pdf VIP
原创力文档

文档评论(0)