收藏 分享(赏)

中华女子学院岗位设置管理实施办法(试行) .doc

上传人:瓦拉西瓦 文档编号:1224747 上传时间:2019-12-09 格式:DOC 页数:10 大小:50.50KB
下载 相关 举报
中华女子学院岗位设置管理实施办法(试行) .doc_第1页
第1页 / 共10页
中华女子学院岗位设置管理实施办法(试行) .doc_第2页
第2页 / 共10页
中华女子学院岗位设置管理实施办法(试行) .doc_第3页
第3页 / 共10页
中华女子学院岗位设置管理实施办法(试行) .doc_第4页
第4页 / 共10页
中华女子学院岗位设置管理实施办法(试行) .doc_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、其地址,以这种方式个构成 的表即为散列表散列表(又称哈希表哈希表或杂凑表杂凑表) 函数 H散列函数散列函数或哈希(哈希(Hash)函数)函数; H(K)散列地址散列地址; 若 K1K2,但 H(K1)=H(K2) 这时我们称发生了冲突冲突。 K1和 K2称为 同义词同义词。 1. 哈希表的概念哈希表的概念 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 置一度设个长为m 的表 T ,用一函据集合中个数将数n的个记录关 字可能唯一地成键尽转换0m-1 范的围内数值, 即于集合中任意对 的字记录关键Ki ,有: 0H(Ki) m-1(0in) 2. 哈希表的基本思想哈希表的

2、基本思想 9.4 哈希表查找技术哈希表查找技术认识哈希表认识哈希表 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 虽然哈希表是一种有效的搜索技术,但是它还有些缺点。两个不同的关键字,由 于哈希函数值相同,因而被映射到同一表位置上。该现象称为冲突(Collision) 或 碰撞。发生冲突的两个关键字称为该哈希函数的同义词(Synonym) 。 假设散列函数是: h(k)=key%4 对于键 3 、 5 、 8 和 10 使用该函数,这些键分散开了,如 图 A 所示 . 但在图 B 中,键 4 和 8 就散列到相同的位置,因此导致了冲突。 3 5 8 10 0 1 2 3

3、 关键字关键字散列表散列表 图 A 用哈希函数 h 将关键字映射到哈希表中 ( 无冲突的情况 ) 3 4 8 10 0 1 2 3 关键字关键字散列表散列表 图 B 用哈希函数 h 将关键字映射到哈希表中 ( 发生冲突的情况 ) 因此,构造哈希函数和建立解决冲突 的方法是建立哈希表的两大任务。 9.4 哈希表查找技术哈希表查找技术认识哈希表认识哈希表 3. 解决哈希冲突解决哈希冲突 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 好的哈希函数的选择有两条标准: (1) 简单并且能够快速计算 (2) 能够在址空间中获取键的均匀人分布 先通求字的平方大相近的差,然后根据表度

4、取过关键值扩数别长中间的 几位数作哈希函。又因一乘的中几位和乘的每一位为数值为个积间数数 都相,所以由此生的散列地址均。关产较为匀 【例】将一组关键字 (0100 , 0110 , 1010 , 1001 , 0111) 平方后得: (0010000 , 0012100 , 1020100 , 1002001 , 0012321) 若取表长为 1000 ,则可取中间的三位数作为散列地址集: (100 , 121 , 201 , 020 , 123) 。 int Hash(int key) / 假设 key 是 4 位整数 key*=key ; key/=100 ; / 先求平方值,后去掉末尾的

5、两位数 return key 1000 ; / 取中间三位数作为散列地址返回 9.4 哈希表查找技术哈希表查找技术构造哈希函数方法构造哈希函数方法 1. 平方取中法平方取中法 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 假设散列表的地址空间为 0 m-1 ,使关键字 K 除以 m 所得 的余数作为散列地址。 散列函数为: H ( K ) =K % m 该方法的关键是选取 m 。选取的 m 应使得散列函数值尽可能与关键字 的各位相关。 m 最好为素数。 【例】有一组关键字 (36475611 , 47566933 , 75669353 , 34547579 , 464

6、83499) , 哈希表的大小是 43 ,则上述键的地址是: 36475611%43=1 47566933%43=32 75669353%43=17 34547579%43=3 46483499%43=26 9.4 哈希表查找技术哈希表查找技术构造哈希函数构造哈希函数 2. 除余法除余法 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 根据哈希表字分成可能分成若干段,然后几段的相加长将关键尽将这值 ,最高位的位舍去,所得果即其并将进结为哈希地址。相加有方时两种 法,一是种顺折,即把每一段中的各位相加,之值对齐称为移位法;另 一是种对折,像折一,把原字中的字按照分的中界你

7、纸条样来关键数划 向中段折,然后求和,之间叠称为折叠法。 【例】有一组关键字 (4766934 , 5656975 , 4685637 , 3547807 , 7569664) ,将这 些数 拆成 2 位、 4 位和 1 位数,然后再把它们相加,如图 11.9 所示: 4766934 5656975 4685637 3547807 关键字关键字 7569664 47+6693+4 56+5697+5 46+8563+7 35+4780+7 拆分键拆分键 75+6966+4 6744 5758 8616 4822 结果结果 7045 图 11.9 用折叠移位法构造哈希函数示意图 9.4 哈希表查

8、找技术哈希表查找技术构造哈希函数构造哈希函数 3. 折叠移位法折叠移位法 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 9.4 哈希表查找技术哈希表查找技术解决哈希冲突方法解决哈希冲突方法 1. 开放地址法开放地址法 用开放定址法解决冲突的做法是用开放定址法解决冲突的做法是:当冲突发生时 ,按照某种方法探测表中的其他存储单元,直到找到空位 置为止。开放地址法很多 , 本课主要介绍线性探测法。 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 散列表将T0m-1 看成是一循向量,若初始探的地址个环查为d( 即 h(key)=d) ,最的探序列:则长

9、查为 d , d+l , d+2 , m-1 , 0 , 1 , d-1 即:探地址查时从d始,首先探开查Td ,然后依次探查Td+1 , ,直到 Tm-1 , 此后又循到环T0 , T1 ,直到探到查Td- 1止。为 探程止于三情:查过终种况 若前探的元空,表示找失(若是入当查单为则查败插则将 key入其写 中); 若前探的元中含有当查单key ,找成功,但于入意味着失则查对插败 ; 若探到查Td-1仍未空元也未找到时发现单key ,无是找是则论查还 入均意味着失插败( 此表时满) 。 哈希表查找技术哈希表查找技术解决哈希冲突方法解决哈希冲突方法 2. 开放地址法之线性探测法开放地址法之线性

10、探测法 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 散列表将T0m-1 看成是一循向量,若初始探的地址个环查为d( 即 h(key)=d) ,最的探序列:则长查为 d , d+l , d+2 , m-1 , 0 , 1 , d-1 即:探地址查时从d始,首先探开查Td ,然后依次探查Td+1 , ,直到 Tm-1 , 此后又循到环T0 , T1 ,直到探到查Td- 1止。为 探程止于三情:查过终种况 若前探的元空,表示找失(若是入当查单为则查败插则将 key入其写 中); 若前探的元中含有当查单key ,找成功,但于入意味着失则查对插败 ; 若探到查Td-1仍未空元

11、也未找到时发现单key ,无是找是则论查还 入均意味着失插败( 此表时满) 。 哈希表查找技术哈希表查找技术解决哈希冲突方法解决哈希冲突方法 2. 开放地址法之线性探测法开放地址法之线性探测法 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 例例:散列函数 H(K)=K%7 ,采用线性探测法将下列数据依次插入下表中: 23 , 34 , 56 , 12 , 8 , 14 , 35 , 25 0123475869 23 1 34 1 56 1 12 1 8 1 14 4 35 5 25 4 假设查找每个元素的概率相同,则 : 查找成功的平均查找长度 (ASL)= 所有数据

12、放置成功的次数 / 数据的个数 ASL=(1+1+1+4+5+1+1+4)/8=18/8 9.4 哈希表查找技术哈希表查找技术解决哈希冲突方法解决哈希冲突方法 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 用此法来构造散列表会产生非同义词对同一地址的争夺,称之为堆积堆积。 0123475869 23 1 34 1 56 1 12 1 8 1 14 4 35 5 25 4 哈希表查找技术哈希表查找技术解决哈希冲突方法解决哈希冲突方法 执行查询算法执行查询算法数据结构数据结构 (Java 语言版语言版 ) 9.4 哈希表查找技术哈希表查找技术解决哈希冲突方法解决哈希冲突方法 2. 链表法链表法 链表法解决冲突的做法是:链表法解决冲突的做法是:将所有关键字为同义 词的结点链接在同一个单链表中。若选定的哈希表长度为 m ,则可将哈希表定义为一个由 m 个头指针组成的指针数 组 T0m-1 。凡是散列地址为 i 的结点,均插入到以 Ti 为头指针的单链表中。 T 中各分量的初值均应为空指针。 在链表法中,装填因子 可以大于 1 ,但一般均取 1 。 散列表的装填因子定义为: = 填入表中的元素个数 / 散列表 的长度 是散列表装满程度的标志因子。由于表长是定值, 与“填入 表中的元素个数”成正比,所以, 越大,

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 实施方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报