哈希表

简介: 哈希表的表示

几个概念

  • 哈希函数:一个把查找表中的关键字映射成该关键字对应的地址的函数,记为H(K)。
  • 冲突:对不同的关键字可能得到同一哈希地址的现象,即key1 != key2,而H(key1)=H(key2)。
  • 同义词:发生冲突的不同关键字。
  • 哈希表:根据关键字直接进行访问的数据结构,建立了关键字与存储地址之间的一种直接映射关系。

哈希函数的构造方法

(1)直接定址法
取关键字或关键字的线性函数值为哈希地址,即H(key)=key或H(key)=a*key+b。
这种方法对于不同的关键字不会发生冲突,但关键字分布不连续,空位多,会造成存储空间的浪费。
(2)除留余数法
取关键字被某个不大于哈希表表长length的数p除后所得的余数为哈希地址,即H(key)=key % p,p<=length。
p一般取一个不大于length但最接近或等于length的质数。
(3)平方取中法
取关键字平方后的中间几位为哈希地址。
(4)数字分析法
设关键字是r进制数,并且哈希表中可能出现的关键字都是事先知道的,则可取关键字的若干位组成哈希地址。
(5)折叠法
将关键字分割成位数相同的几部分,然后取这几部分的叠加和(舍去进位)作为哈希地址。
当关键字位数很多,而且关键字中每一位上数字分布大致均匀是适用。

处理冲突的方法

  • 开放定址法

H~i~ = (H(key) + d~i~) % length,i = 1,2,3,...,length。
其中:H(key)为哈希函数;length为哈希表表长;d~i~为增量序列。
对于d~i~有几种不同的取法:
(1)d~i~ = 1,2,3,...,length-1,称为线性探测再散列;
(2)d~i~ = 1^2^,-1^2^,2^2^,-2^2^,3^2^,...,+-k^2^(k<=length/2),称为二次探测再散列;
(3)d~i~ = 伪随机数序列,称为伪随机探测再散列。
在这里插入图片描述

  • 再哈希法

H~i~ = RH~i~(key),i = 1,2,3,...,length。
RH~i~均为不同的哈希函数,即在同义词产生冲突时计算另一个哈希函数地址,直到冲突不在发生。

  • 链地址法

将所有关键字为同义词的记录存储在同一线性表中。
在这里插入图片描述

目录
相关文章
|
人工智能 安全 Linux
开箱即用的使用体验!Alibaba Cloud Linux 的演进之旅
AI时代的到来,对操作系统带来怎样的挑战?
开箱即用的使用体验!Alibaba Cloud Linux 的演进之旅
|
8月前
|
机器学习/深度学习 canal 人工智能
31类常见牙科结构与病变目标检测数据集(25000+张图片已标注)| YOLO训练数据集 AI视觉检测
本数据集含25000+张高质量牙科影像,覆盖龋齿、种植体、根尖病变、正畸托槽等31类结构与病变,采用YOLO标准标注格式,支持train/val/test划分,适用于YOLO、Faster R-CNN等模型训练,助力牙科AI诊断、教学与算法研发。
|
8月前
|
人工智能 算法 人机交互
如何定义“人味儿”?——HeartBench评测体系建设实践
2025年AI进入“定义问题”下半场,情感与拟人化能力成新焦点。HeartBench是国内首个面向中文心理社科领域的拟人化评测基准,覆盖人格、情绪、社交等5大维度、15项能力,含296题+2818条评分标准,经专家盲测验证人机一致率达86%,开源推动AI“人味儿”科学评估。
|
8月前
|
监控 API 数据安全/隐私保护
OpenClaw阿里云/本地台部署+商业落地指南|5类实战案例+API配置与避坑要点
2026年,OpenClaw(Clawdbot)已从技术工具演进为具备商业落地能力的经济代理载体,其核心价值并非直接“生成收益”,而是通过自动化执行、实时数据监控、决策效率提升构建竞争优势,最终转化为可量化的经济价值。通过对公开案例的梳理发现,成功的商业落地多集中在决策辅助、自动化流程、知识服务三大方向,而落地的前提是完成稳定的部署与合理的模型配置。本文结合5个真实商业案例,拆解OpenClaw的商业应用逻辑与避坑要点,完整提供阿里云及本地多系统部署流程、免费大模型API配置方法,形成一套“部署-配置-落地-避坑”的完整方案,全程不含营销词汇,兼顾实用性与可操作性。
930 0
|
JSON fastjson 数据格式
使用FastJson对json格式字符串、json对象以及javabean直接的相互转换
一、fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
4477 0
|
8月前
|
存储 人工智能 安全
APP上架安全评估:数字时代的合规通行证与用户信任生命线
APP上架安全评估不仅是企业跨越监管红线的“合规通行证”,更是守护用户信任的“安全生命线”。通过漏洞扫描、隐私合规审查与风险动态监测的立体化评估机制,企业能够构建起覆盖代码安全、数据加密、权限管控的全维度防护体系,为每一行代码注入“安全基因”,让每一次用户交互、每一笔交易流转、每一项功能迭代都置于可信可控的保障之下,在数字浪潮中筑牢安全根基,实现可持续的稳健发展。
432 0
|
机器学习/深度学习 算法 安全
PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
944 0
|
存储 缓存 弹性计算
聚宽揭秘:为什么量化研究员喜欢在Kubernetes上使用Fluid简化数据管理?
通过引入阿里云的 ack-fluid 技术,基于 JindoRuntime 的分布式缓存加速,解决了多数据源、弹性扩展、动态挂载等挑战,显著提升了数据处理效率和资源利用率,降低运营成本。这一方案帮助量化研究员实现了更高效的开发和实验流程,为未来的优化和扩展奠定了基础。
|
NoSQL Java Redis
Redlock分布式锁高并发下有什么问题
Redlock分布式锁在高并发场景下可能面临的问题主要包括:网络延迟、时钟偏移、单点故障、宕机重启问题、脑裂问题以及效率低等。接下来,我将使用Java代码示例来说明其中一些问题。
659 12
|
存储 人工智能 大数据
「PAI-ArtLab100 AIGC」设计普惠计划发布!与 100+ 高校共同探索 AIGC 教育新路径
6月28日,D20全球设计院长峰会(简称D20峰会)在杭州阿里巴巴全球总部召开。峰会现场,阿里云高校合作部、阿里云人工智能平台PAI,以及阿里云设计中心联合发布「ArtLab100 AIGC设计普惠计划」(简称ArtLab100计划),与 100+ 高校共同探索 AIGC 教育新路径。旨在推动设计艺术教育与人工智能技术的深度结合,培育新时代的设计创新人才,同时加强校企合作,促进产业界与学术界的协同进步。
「PAI-ArtLab100 AIGC」设计普惠计划发布!与 100+ 高校共同探索 AIGC 教育新路径