当前位置: 首页 > news >正文

【解决哈希冲突】

哈希冲突

如果两个不同的 key 通过哈希函数得到了相同的索引,这种情况就叫做「哈希冲突」

哈希冲突不可能避免,只能在算法层面妥善处理出现哈希冲突的情况。

哈希冲突是一定会出现的,因为这个 hash 函数相当于是把一个无穷大的空间映射到了一个有限的索引空间,所以必然会有不同的 key 映射到同一个索引上。

哈希冲突的解决办法

出现哈希冲突的情况怎么解决?两种常见的解决方法,一种是拉链法,另一种是线性探查法(也经常被叫做开放寻址法)。

就是纵向延伸和横向延伸两种思路:

1、拉链法:

拉链法相当于是哈希表的底层数组并不直接存储 value 类型,而是存储一个链表,当有多个不同的 key 映射到了同一个索引(节点)上,这些 key -> value 对儿就存储在这个链表中,这样就能解决哈希冲突的问题。

2、开放寻址法

而线性探查法的思路是,一个 key 发现算出来的 index 值已经被别的 key 占了,那么它就去 index + 1 的位置看看,如果还是被占了,就继续往后找,直到找到一个空的位置为止。

比方说上图,key 的插入顺序是 k2, k4, k5, k3, k1,那么哈希表底层就会变成这样:


http://www.mrgr.cn/news/93908.html

相关文章:

  • vscode带参数调试
  • starrocks如何配置多个hive数据源,其中一个是kerberos认证
  • JavaScript中的生成器函数详解
  • 【CSS3】金丹篇
  • 微信小程序,自定义导航栏,搜索框滚动,搜索框过渡,滚动吸顶,吸顶导航栏,过渡动画,自定义tabbar
  • 【14】单片机编程核心技巧:整除运算与数位提取
  • VSCode 2025最新前端开发必备插件推荐汇总(提效指南)
  • Mac如何查看 IDEA 的日志文件
  • vulnhub靶场【digitalworld.local系列】的electrical靶机
  • OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改
  • 用python和Pygame库实现“跳过障碍”游戏
  • 从0开始的操作系统手搓教程33:挂载我们的文件系统
  • 若依RuoYi-Cloud-Plus微服务版(完整版)前后端部署
  • c语言笔记 getchar
  • 关于在electron(Nodejs)中使用 Napi 的简单记录
  • 多模态融合的分类、跨模态对齐的方法
  • 练习:关于静态路由,手工汇总,路由黑洞,缺省路由相关
  • vue3 + xlsx 实现导入导出表格,导出动态获取表头和数据
  • Linux 离线部署Ollama和DeepSeek-r1模型
  • 零基础掌握Linux SCP命令:5分钟实现高效文件传输,小白必看!