散列表

news/2025/11/29 20:20:50/文章来源:https://www.cnblogs.com/xxxuiao/p/19287344

有关散列表的真题

平均查找长度

image

[解析]
可以构造得到如下的 HT:

下标 0 1 2 3 4 5 6
关键词 22 43 15
成功时的平均查找长度 = (1+2+3)/3 = 2。

image

[解析]
构造 散列表 只有当遇到关键字为空的地址时才会查找失败,key%7 之后,初始地址只可能在 0~6,所以即 0~6 到空地址的距离求平均,即为查找失败的平均查找长度初始地址是 0 的失败查找长度为 9,同理得初始地址为 1,2,3,4,5,6 的失败查找长度为 8,7,6,5,4,3,(9+8+7+6+5+4+3)/7 = 6 答案是 C。

image

概念相关

T1

image
[解析]
哈希表 的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与装填因子(表中记录数与表长之比)的大小成正比,即装填得越满越容易发生冲突,I 错误。II 显然正确。采用合适的处理冲突的方式避免产生聚集现象,也将提高查找效率,例如用拉链法解决冲突时就不存在聚集现象,用线性探测法解决冲突时易引起聚集现象,III 正确。

T2

image

[解析]
产生堆积现象,即产生了冲突,它对存储效率、散列函数和装填因子均 不会有影响,而 平均查找长度 会因为堆积现象而增大,选 D。

散列表堆积现象是什么?
在哈希表中,不同的键(Key)通过哈希函数计算后,得到的哈希值(即存储地址)集中在表的少数几个位置,导致部分桶(Bucket)非常拥挤,而其他桶几乎为空。
image
如图,
不同的键(Key) → 通过 哈希函数 → 得到哈希值(存储桶位置)
如果哈希函数不均匀或数据分布不均:
很多键映射到少数桶 → 这些桶非常拥挤
其他桶几乎为空 → 空间利用率不均衡
这就是所谓的 堆积现象(Clustering)

散列表堆积的原因
1.哈希函数设计不合理
2.装载因子过高
3.数据本身分布集中
4.开放寻址方法中的堆积

为什么装填因子会造成堆积,装填因子是指什么?
装填因子 α 越高 → 冲突概率越大 → 堆积现象越严重。

T3

image

[解析]
三者都会影响:装填因子越大,说明 哈希表 中存储的元素越满,发生冲突的可能性越大,平均查找长度也越大。散列函数、突解决策略会影响发生冲突的可能性。

哈希表的概念

散列表(hash table),也叫 哈希表,是一种常用的数据结构,提供了快速的数据存储和检索操作。它使用一个数组(通常称为 桶 或 槽)来存储数据。为了将数据存储到散列表中,数据项首先与一个 键 关联,然后使用一个 散列函数 将该键转换为数组的索引。这样,通过该键可以快速找到相应的数据项。

散列表的关键性能指标是其 装载因子,通常表示为 λ。装载因子是散列表中当前存储的元素数量与散列表的容量之比。随着装载因子的增加, 散列冲突的可能性也会增加,这可能会降低散列表的性能。

散列表扩容

Q1-什么是扩容?

扩容(Rehashing)是增加散列表容量以容纳更多元素并降低装载因子的过程。以下是扩容的主要步骤:

  • 创建一个 更大容量 的新散列表,通常采用指数倍增长策略(如容量翻倍)。
  • 遍历旧散列表中的所有元素,使用 新的哈希函数(或调整后的哈希函数)将它们重新插入到新散列表中。
  • 释放旧散列表的内存。

扩容会消耗一定时间,尤其当散列表元素较多时开销较大。然而,由于扩容操作不频繁,其时间成本被分摊到每次插入操作中,使得插入的平摊时间复杂度仍为 O(1)。

Q2-为什么要扩容?

当哈希表的装填因子 α = n/m超过阈值(比如 0.7 或 0.75)时冲突概率增加,查询/插入性能下降

扩容可以:减少冲突;保持平均 O(1) 查找效率

Q3-散列表扩容是在原散列表上扩的吗?

不是,哈希地址是由 桶数 m 决定的:

改变桶数后,原元素的哈希位置也会改变

如果不重新哈希,元素会分布错误,查找失败

散列表扩容是新建更大表 + 重新哈希 + 转移元素,而不是在原表基础上直接增加桶。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/981182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯TBDS和Cloudera Data AI CMP 比较的缺陷在哪里?

腾讯TBDS和Cloudera Data AI CMP 比较的缺陷在哪里?腾讯TBDS和Cloud Data AI CMP 比较的缺陷在哪里?腾讯云 TBDS(Tencent Big Data Suite) 与 Cloud Data AI CMP(Cloud Data AI Platform) 的全面、结构化优劣势对…

python获取绝对路径复制文件

python获取绝对路径复制文件import shutil import sys import os def cur_file_dir():path = sys.path[0]if os.path.isdir(path):return pathelif os.path.isfile(path):return os.path.dirname(path) def path(p):re…

Task状态

1 Task task=null;2 private void button1_Click(object sender, EventArgs e)3 {4 task = Task.Factory.StartNew(() =>5 {6 while (true)7 …

实用指南:算法<C++>——二分查找

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 哈尔滨轴承品牌价值TOP10榜单

本次榜单联合黑龙江省轴承工业协会、哈尔滨市制造业创新中心共同制作,数据来源于 2024 年企业年报、第三方检测机构报告及市场调研问卷(样本量 1200 份),从技术硬实力、市场认可度、质量稳定性三大维度构建评估体系…

AI革命中的开源NLP工具与技术实践

本期播客探讨了工业级自然语言处理工具spaCy和标注工具Prodigy的应用实践,讨论了大型语言模型与专用模型的平衡、人类在环蒸馏技术、NLP领域的模块化与隐私挑战,以及AI监管对创新的影响。第34集:AI革命不会被垄断 H…

Python 潮流周刊#129:Pydantic 还能做些什么?

本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 温馨提…

【论术】: 响应式布局——flex:1与calc的区别

莫说相公痴,更有痴似相公者。 —— 张岱《湖心亭看雪》 是什么 calc: 是css3新增的用于计算容器数值的计算函数,基于数学角度计算一个元素的数值 (flex:1):是flex布局对于剩余空间的声明,表示占据所有剩余空间 关联…

Git 误操作恢复指南:回退`reset --hard` 和 `push -f`

场景:误操作的后果 发生的操作(错误)您将本地分支回退到较旧的提交:git reset --hard [旧哈希 A] 您将此回退状态强制同步到远程仓库:git push origin -f [分支名]结果和风险本地: 提交 B 及之后的历史记录看似“…

详细介绍:算法 - 差分

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

《程序员修炼之道:从小工到专家》观后感第六篇

笔记六:《自动化与工具 ——“自动化一切” 的效率革命》 核心观点:自动化是解放重复劳动的 “生产力工具”,从开发、测试到部署的全流程自动化,能大幅提升团队效能,让开发者聚焦创造性工作。 案例分析:某 SaaS …

Day6-20251129

摘要:本文介绍了JAVA基础语法中的注释使用,包括单行注释(//)、多行注释(/* /)和文档注释(/* */)三种形式。详细说明了在IDEA中创建JAVA项目、模块的基本步骤,以及如何修改注释的显示颜色和样式。通过HelloWorld示例…

详细介绍:反反爬虫实战:手撕某知名网站Webpack加密的JavaScript

详细介绍:反反爬虫实战:手撕某知名网站Webpack加密的JavaScript2025-11-29 19:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !im…

《程序员修炼之道:从小工到专家》观后感第五篇

笔记五:《协作与沟通 —— 技术人的 “软技能” 实效修炼》 核心观点:技术人的影响力不仅源于技术深度,更依赖协作沟通的 “软技能”。清晰的文档、高效的代码评审、精准的方案表达,是减少团队摩擦、提升整体效能的…

深入解析:Rust 迭代器的性能优化技巧

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

20251129——读后感6

要积累知识,把解决的问题、学习的知识点记录下来。比如遇到Redis缓存击穿问题,记录下分析和解决步骤,下次遇到类似问题就能快速参考,就像医生的病历库,方便后续诊疗。

#20232408 2025-2026-1 《网络与系统攻防技术》实验七实验报告 - 20232408

1.实验内容 1.1使用SET工具建立冒名网站; 1.2使用Ettercap进行DNS欺骗;1.3结合SET与Ettercap技术实施DNS欺骗钓鱼攻击;1.4提高防范意识,并提出具体防范方法。2.实验目的 理解常用网络欺诈背后的原理,以提高防范意…

百科代做公司推荐,2025年12月权威发布百度百科/快懂百科代做公司信息

在数字化传播的当下,网络信息已成为公众了解企业的首要渠道,而百科词条作为兼具权威性与公信力的信息载体,逐渐成为企业品牌建设的核心阵地。百度百科与快懂百科凭借各自的平台优势,成为企业布局网络形象的关键选择…

价值七原语:文明觉醒的阶梯

在人工智能浪潮席卷而来的今天,我们正站在文明进化的十字路口。数值优化与规则完善的无尽拉扯,暴露出人类价值体系的深层困境。Ai元人文的价值七原语阐释,为我们提供了一条从混沌走向清明的路径。这七个原语并非简单…