- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学 号 姓名 性别 … 99001 张 云 女 … 99002 王 民 男 … 99003 李 军 男 … 99004 汪 敏 女 … 99030 刘小春 男 … …… … … … 关键字 1 2 3 4 : : 30 …… 散列函数: H(k) = “ 将组成关键字k的 串转换为一个1―30 之间的代码 ” H(张云)=2 张 云 ? H(王民)=4 王 民 ? H(李军)=1 李 军 ? H(汪敏)=4 汪 敏 ? 地址冲突 地址范围:[1..30] 一个处理过程 例2 选择一种处理 冲突的方法 对于不同的关键字ki与kj,经过散列得到 相同的散列地址,即有 H(ki) = H(kj) 这种现象称为散列冲突。 称ki与kj为“同义词” 2.散列冲突 根据构造的散列函数与处理冲突的方法将一组 关键字映射到一个有限的连续地址集合上,并以关 键字在该集合中的“象”作为记录的存储位置,按照 这种方法组织起来文件称为 ,或 , 或称 ;建立文件的过程称为哈希造表或者 散列,得到的存储位置称为散列地址或者杂凑地址。 哈希文件 散列文件 杂凑文件 3.什么是散列文件 二.散列函数的构造 1. 原 则 散列函数的定义域必须包括将要存储的全部 关键字;若散列表允许有m个位置时,则函 数的值域为[0 .. m–1](地址空间)。 利用散列函数计算出来的地址应能尽可能均 匀分布在整个地址空间中。 散列函数应该尽可能简单,应该在较短的时 间内计算出结果。 一个“好”的散列函数 1. 直接定址法 2. 数字分析法 3. 平方取中法 4. 叠加法 5. 基数转换法 6. 除留余数法 2. 建立散列文件的步骤 3. 散列函数的构造方法 确定散列的地址空间(地址范围); 构造合适的散列函数; 选择处理冲突的方法。 H(k)=ak+b 一般形式 详见教材P307-309 H(k)=k–99000 H(k) = k MOD p 其中,若m为地址范围大小(或称表长), 则p可为小于等于m的素数。 除留余数法 散列地址范围[0..m-1] 所谓开放地址法是在散列表中的“空”地址向处理冲 突开放。即当散列表未满时,处理冲突需要的“下一个” 地址在该散列表中解决。 (1) di=1, 2, 3, …, m–1 称为线性探测再散列 (3) di=伪随机数序列 称为伪随机再散列 1.开放地址法 所谓处理冲突,是在发生冲突时,为冲突的元 素找到另一个散列地址以存放该元素。如果找到 的地址仍然发生冲突,则继续为发生冲突的这个 元素寻找另一个地址,直到不再发生冲突。 闭散列方法 三.冲突的处理方法 Di = ( H(k) +di ) MOD m i=1, 2, 3, … 其中,H(k)为哈希函数,m为表长,di为地址增量,有: (2) di=12, -12, 22, -22, …, 称为二次探测再散列 设散列函数为 H(k) = k MOD 13 散列表为[0..12],表中已分别有关键字为19,70,33的记录,现将第四个记录(关键字值为18)插入散列表中。 除留余数法 插入前 0 1 2 3 4 5 6 7 8 9 10 11 12 70 19 33 Di = ( k MOD 13 + di ) MOD 13 线性再散列 0 1 2 3 4 5 6 7 8 9 10 11 12 70 19 33 散列地址为5 18 0 1 2 3 4 5 6 7 8 9 10 11 12 70 19 33 二次再散列 18 例3 Di = (k MOD 13 + di) MOD 13 0 1 2 3 4 5 6 7 8 9 10 11 1
原创力文档


文档评论(0)