0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HASH哈希游戏开发(技术方案):开放寻址法详解

開發丨KFZ433 来源:開發丨KFZ433 作者:開發丨KFZ433 2022-06-29 13:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是哈希开放寻址法?

开放寻址法,就是当发生哈希冲突时,重新找到空闲的位置,然后插入元素。寻址方式有多种,常用的有线性寻址、二次方寻址、双重哈希寻址:

​线性寻址​,当需要插入元素的位置被占用时,顺序向后寻址,如果到数组最后也没找到一个空闲位置,则从数组开头寻址,直到找到一个空闲位置插入数据。线性寻址的每次寻址步长是1,寻址公式​​hash(key)+n​​(n是寻址的次数)。 ​二次方寻址​,就是线性寻址的总步长的二次方,即​​hash(key)+n^2​​。 ​双重哈希寻址​,顾名思义就是多次哈希直到找到一个不冲突的哈希值。

pYYBAGK7566APp7lAABex73Fz_M407.png

采用开放寻址法解决哈希冲突,又该如何查找元素和删除元素呢?

查找元素的过程和插入元素类似,用相同的寻址方式,寻址的同时比对key或者value是否相等,相等则认为元素存在,不相等则继续寻址,​如果探测到空闲位置依然没有找到则认为该元素不存在​。

删除有些特别,​不能单纯的把要删除的元素设置为空​,因为在查找元素的过程中探测到的空闲位置是删除元素的位置,就会使得查找元素的寻址算法失效,本来存在的元素误判定为不存在。该如何解决这个问题呢?

​只需要删除元素不是物理删除而是逻辑删除​。给删除的元素做上delete标记,当查询元素寻址时遇到delete标记的位置时不会停下来而是​继续向后探测​,但是在插入元素寻址遇到delete标记的位置就会把应该删除的元素替换掉。

三种寻址方式都有着明显的不足:

线性寻址,寻址的性能虽然元素个数的增多逐步下降,最坏时间复杂度是O(n)。 二次方寻址,寻址的次数比线性寻址较低了,但是会因为步长是二次方,所以需要较长的数组长度,内存利用率可能较低。 双重哈希寻址,多次哈希可能会浪费时间,需要优质的哈希函数做支撑。

而整个开放寻址法的不足也很明显:

插入、查找、删除都需要寻址。 数组中元素越多,空闲位置越少,哈希冲突越剧烈。所以装载因子不能太大,要及时扩容减小冲突,但是数组内存利用率较低。

看似开放寻址法有挺多问题,但是也有一些优点:

数据都存储在数组中,可以有效地利用 CPU 缓存加快查询速度。 而且,这种方法实现的哈希表,序列化也简单,不像链表还要考虑指针。

总结而得,当数据量比较小、装载因子小的时候,适合采用开放寻址法。这也是 Java 中​​ThreadLocal​​​内部类​​ThreadLocalMap​​使用开放寻址法解决散列冲突的原因。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66855
  • 哈希算法
    +关注

    关注

    1

    文章

    56

    浏览量

    11092
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2025开放原子开发者大会开源鸿蒙技术分论坛隆重举行

    11月21日,2025开放原子开发者大会开源鸿蒙技术分论坛在北京隆重举行。本次分论坛由开放原子开源基金会主办,开源鸿蒙项目群工作委员会、开鸿智谷联合承办,华为、深开鸿、润开鸿、九联开鸿
    的头像 发表于 11-27 14:41 383次阅读

    Molex OTS零哈希电缆组件技术解析与应用指南

    Molex现成(OTS)零哈希电缆组件是标准分立式电线电缆组件,设计用于应对电子设备日益缩小的挑战。这些电缆组件提供节省空间的薄型解决方案,具有创新的双点接触特性,有2、4、6和8电路尺寸可供选择
    的头像 发表于 11-17 16:44 470次阅读

    Redis集群部署配置详解

    Redis集群是一种分布式Redis解决方案,通过数据分片和主从复制实现高可用性和横向扩展。集群将整个数据集分割成16384个哈希槽(hash slots),每个节点负责一部分槽位。
    的头像 发表于 07-17 11:04 595次阅读

    技术干货 | 精准测试,高效分析——ADC直方图测试技术详解

    本章详解ADC线性度测试的两种核心方法:线性斜坡和正弦波,涵盖DNL/INL计算、测试参数优化及德思特高精度测试方案,助您快速掌握ADC性能评估关键
    的头像 发表于 07-07 10:40 722次阅读
    <b class='flag-5'>技术</b>干货 | 精准测试,高效分析——ADC直方图测试<b class='flag-5'>技术</b><b class='flag-5'>详解</b>

    关于RK3568核心板可以下载固件成功,但是启动失败,串口打印日志显示:HASH(c): error Invalid DTB hash !

    DTB: rk3568-atk-evb1-mipi-dsi-1080p#_saradc_ch2=341.dtb HASH(c): error Invalid DTB hash ! No find valid DTB, ret=-22
    发表于 07-01 09:42

    鸿蒙5开发宝藏案例分享---一多开发实例(游戏

    十年前藏的现金一样惊喜!)这些藏在文档深处的\"武功秘籍\",能帮我们轻松实现分布式游戏、跨端协同这些听起来很酷的功能。快上车,带你解锁鸿蒙开发的正确姿势! 一、分布式游戏手柄
    发表于 06-03 18:22

    全链路赋能游戏鸿蒙化适配,鸿蒙游戏开发者服务焕新升级

    实践,通过专家授课、案例解析与现场互动,为开发者提供从技术适配到创新玩法落地的一站式解决方案游戏鸿蒙化流程详解:7步轻松实现从适配到上架
    的头像 发表于 03-17 09:25 851次阅读
    全链路赋能<b class='flag-5'>游戏</b>鸿蒙化适配,鸿蒙<b class='flag-5'>游戏</b><b class='flag-5'>开发</b>者服务焕新升级

    亚马逊云科技推出Amazon GameLift Streams助力开发者实现游戏全平台跨设备串流

    亚马逊云科技全新功能可助力游戏开发者触达全球更多玩家,拓展变现机会并提升收入   北京 ——2025 年 3 月 13 日 亚马逊云科技宣布推出全托管游戏串流解决方案Amazon Ga
    发表于 03-13 13:36 383次阅读

    OpenHarmony在应用与游戏开发领域的前沿成果

    展示了OpenHarmony在应用与游戏开发领域的前沿成果。这些凝聚智慧与协作的参赛作品,不仅在技术层面实现了多项突破,更在商业化应用层面验证了开源生态的无限潜力。赛事不仅彰显了开发
    的头像 发表于 03-03 15:04 895次阅读

    半导体推出创新NFC技术应用开发套件

    半导体新推出一款创新的非接触式近场通信(NFC)技术应用开发套件。这款开发套件包含意半导体新推出的ST25R200读写芯片,让NFC
    的头像 发表于 02-20 17:16 1332次阅读

    讯飞开放平台上线DeepSeek大模型

    作为首批“人工智能国家队”,讯飞开放平台致力于为全球开发者提供领先的人工智能技术与解决方案,依托讯飞研究院源头技术创新和能力星云计划的行业共
    的头像 发表于 02-10 14:20 1657次阅读

    MediaTek与知名游戏引擎开发商Cocos达成深度合作

    为带给开发者和用户智能互动新体验, MediaTek 与知名游戏引擎开发商 Cocos 达成深度合作,将 MediaTek 端侧生成式 AI 领域的前沿技术,与 Cocos 在
    的头像 发表于 01-10 13:48 681次阅读

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】RA4E2使用之SHA256加密解密

    和解密算法来进行解释和说明数据加密和解密操作的。 SHA-256是一种哈希函数,属于SHA-2(Secure Hash Algorithm 2)家族的一部分。它是由美国国家安全局(NSA)设计,并由
    发表于 12-23 18:18

    DFRobot参加2024开放原子开发者大会及开放原子开放硬件许可证发布仪式

    12月20日至21日,2024开放原子开发者大会暨首届开源技术学术大会在湖北省武汉市东湖新技术开发区的光谷希尔顿酒店隆重举行。此次大会以“一切为了
    的头像 发表于 12-23 16:21 994次阅读
    DFRobot参加2024<b class='flag-5'>开放</b>原子<b class='flag-5'>开发</b>者大会及<b class='flag-5'>开放</b>原子<b class='flag-5'>开放</b>硬件许可证发布仪式

    2024开放原子开发者大会暨首届开源技术学术大会成功举办

    近日,以“一切为了开发者”为主题的2024开放原子开发者大会暨首届开源技术学术大会在武汉成功举办。大会为众多开源项目和开发者提供了广阔的展示
    的头像 发表于 12-23 14:23 820次阅读