news 2026/9/3 6:08:37

HASH表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HASH表

HASH函数构造


构造函数的常用方法(下面为了叙述简洁,设 h(k) 表示关键字为 k 的元素所对应的函数值):

为简单起见,假定关键码是定义在自然数集合上,常见的哈希函数构造方法有:

1、直接定址法


以关键字Key本身或关键字加上某个数值常量C作为散列地址的方法。散列函数为:h(Key)= Key+C,若C为0,则散列地址就是关键字本身。

2、除余法


选择一个适当的正整数m,用m去除关键码,取其余数作为地址,即:h(Key)= Key % m,这个方法应用的最多,其关键是m的选取,一般选m为小于某个区域长度n的最大素数(如例1中取m=13),
为什么呢?就是为了尽力避免冲突。假设取m=1000 ,则哈希函数分类的标准实际上就变成了按照关键字末三位数分类,这样最多1000类,冲突会很多。
一般地说,如果 m 的约数越多,那么冲突的几率就越大。而素数的约数是最少的,因此我们选用大素数。记住“素数是我们的得力助手”。

3、数字分析法


常有这样的情况:关键码的位数比存储区域的地址的位数多,在这种情况下可以对关键码的各位进行分析,丢掉分布不均匀的位留下分布均匀的位作为地址。

本方法适用于所有关键字已知,并对关键字中每一位的取值分布情况作出了分析。

【例】 对下列关键码集合(表中左边一列)进行关键码到地址的转换,要求用三位地址。

分析:

键码是9位的,地址是3位的,需要经过数字分析丢掉6位。丢掉哪6位呢?显然前3位是没有任何区分度,第5位1太多、第6位基本都是8和9、第7位都是3、4、5,这几位的区分度都不好,而相对来说,第4、8、9位分布比较均匀,所以留下这3位作为地址(表中右边一列)。

4、平方取中法


将关键码的值平方,然后取中间的几位作为散列地址。具体取多少位视实际要求而定,取哪几位常常结合数字分析法。

【例】
将一组关键字(0100,0110,1010,1001,0111)平方后得(0010000,0012100,1020100,1002001,0012321),若取表长为1000,则可取中间的三位数作为散列地址集:(100,121,201,020,123)。

5、折叠法


如果关键码的位数比地址码的位数多,而且各位分布较均匀,不适于用数字分析法丢掉某些数位,那么可以考虑用折叠法。折叠法是将关键码从某些地方断开,分关键码为几个部分,其中有一部分的长度等于地址码的长度,然后将其余部分加到它的上面,如果最高位有进位,则把进位丢掉。

一般是先将关键字分割成位数相同的几段(最后一段的位数可少一些),段的位数取决于散列地址的位数,由实际需要而定,然后将它们的对应位叠加和(舍去最高位进位)作为散列地址。

6、基数转换法


将关键码值看成在另一个基数制上的表示,然后把它转换成原来基数制的数,再用数字分析法取其中的几位作为地址。一般取大于原来基数的数作转换的基数,并且两个基数要是互质的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 20:09:21

C语言----表达式求值

C语言表达式求值规则C语言表达式求值遵循特定规则,包括优先级、结合性和类型转换。理解这些规则对编写正确代码至关重要。运算符优先级运算符优先级决定表达式中各部分的计算顺序。常见运算符优先级从高到低:括号 ()单目运算符 、--、!、~、(…

作者头像 李华
网站建设 2026/9/3 22:50:18

68、Windows 7 系统维护与优化全攻略

Windows 7 系统维护与优化全攻略 1. 启动和恢复设置 启动和恢复选项可控制 Windows 7 的启动方式以及处理故障的方法。以下是查看和配置启动与恢复选项的步骤: 1. 点击“开始”→“控制面板”→“系统和安全”→“系统”。 2. 在“系统”控制台中,点击“计算机名、域和工…

作者头像 李华
网站建设 2026/9/3 3:58:44

Langchain-Chatchat版本更新日志解读:v0.2.8带来了哪些新特性?

Langchain-Chatchat v0.2.8 新特性深度解析:从实验到生产的跨越 在企业智能化转型的浪潮中,如何让大语言模型真正“落地”而非停留在演示阶段,成为越来越多技术团队关注的核心问题。尤其是在金融、医疗、政务等对数据安全要求极高的领域&…

作者头像 李华
网站建设 2026/9/2 22:14:21

75、Windows 7网络设置、版本升级与启动环境全解析

Windows 7网络设置、版本升级与启动环境全解析 1. Windows 7网络连接与桌面准备 当你选择家庭作为连接类型时,会有额外的选项。若你的家庭网络没有家庭组,你可以设置一个新的家庭组;若已有家庭组,你能够加入该家庭组并设置共享选项。完成网络设置后,Windows 7会准备好桌…

作者头像 李华
网站建设 2026/9/3 0:56:32

78、Windows Media Center使用指南

Windows Media Center使用指南 1. 初始设置 1.1 扬声器配置 Windows Media Center提供了多种扬声器选择,包括两个扬声器、5.1环绕扬声器和7.1环绕扬声器。具体操作步骤如下: 1. 选择正确的扬声器配置,然后点击“下一步”。 2. 选择“测试”按钮。 - 若所有扬声器都有声…

作者头像 李华
网站建设 2026/9/4 1:13:12

俄罗斯市场必备:5个让Yandex图片搜索流量暴涨的秘技

在俄罗斯及东欧市场,Yandex占据超过60%的搜索市场份额。与Google不同,Yandex对图片搜索结果的排序算法更注重反向链接的质量与相关性。根据2025年GEO行业报告数据,优化后的图片内容在Yandex的正文引用率可提升300%,成为企业获取精…

作者头像 李华