Hash算法解决冲突的四种方法

Hash算法解决冲突的方法一般有以下几种常用的解决方法 
1, 开放定址法: 
所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 
公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1) 
※ 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探测技术在散列表中形成一个探测序列。沿此序列逐个单元地查找,直到找到给定的关键字,或者 
碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探测到开放的地址则表明表 
中无待查的关键字,即查找失败。 
比如说,我们的关键字集合为{12,67,56,16,25,37,22,29,15,47,48,34},表长为12。 我们用散列函数f(key) = key mod l2 
当计算前S个数{12,67,56,16,25}时,都是没有冲突的散列地址,直接存入:

计算key = 37时,发现f(37) = 1,此时就与25所在的位置冲突。 
于是我们应用上面的公式f(37) = (f(37)+1) mod 12 = 2。于是将37存入下标为2的位置:

2, 再哈希法: 
再哈希法又叫双哈希法,有多个不同的Hash函数,当发生冲突时,使用第二个,第三个,….,等哈希函数
计算地址,直到无冲突。虽然不易发生聚集,但是增加了计算时间。

3, 链地址法: 
链地址法的基本思想是:每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以用这个单向 
链表连接起来,如: 
键值对k2, v2与键值对k1, v1通过计算后的索引值都为2,这时及产生冲突,但是可以通道next指针将k2, k1所在的节点连接起来,这样就解决了哈希的冲突问题

4, 建立公共溢出区: 
这种方法的基本思想是:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表

(0)

相关推荐

  • 浅谈C# Dictionary实现原理

    使用C#已经有好多年头了,然后突然有一天被问到C#Dictionary的基本实现,这让我反思到我一直处于拿来主义,能用就好,根本没有去考虑和学习一些底层架构,想想令人头皮发麻.下面开始学习一些我平时用 ...

  • 面试官常问的“一致性哈希”,都在这 18 张图里

    大家好,好久不见啦.最近快年底了,公司.部门事情太多:冲刺 KPI.做部门预算--所以忙东忙西的,写文章就被耽搁了.再加上这篇文章比较硬,我想给大家讲得通俗易懂,着实花了很多时间琢磨怎么写. 话不多说 ...

  • 脱发严重怎么办?解决脱发的四种方法!

    人的一辈子,总是处在各种烦恼中,有的人为生计而烦恼,有的人为情感而发愁,还有的人为吃什么药治脱发最有效而困恼.一旦脱发了,它的伤害性不大,但它的侮辱性却很强.今天小编就和大家聊一聊关于脱发的话题,希望 ...

  • 解决矛盾的四种方法?

    . 1.矛盾的一方克服另一方,如优胜劣汰; 2.矛盾双方同归于尽,为新的对立双方所取代,如奴隶社会矛盾的奴隶阶级与奴隶主阶级的矛盾,被资本主义社会的工人阶级与资本家的矛盾所取代; 3.矛盾双方经过一系 ...

  • 矛盾冲突解决四种方法

    当今世界,人于人之间的矛盾冲突是越来越复杂,越来越烦琐,可就有那么些人一直研究着这个话题-冲突应该怎样解决 人与人之间的矛盾冲突解决方法大致可分为四种,这里说出来和大家分享 一.惯例解决法 人们出现问 ...

  • 解决网页禁止复制的四种方法

    我们在使用电脑浏览器浏览网页的时候,有时候我们会发现有些网页的内容是无法复制的,比如搜索到360doc这个网站的文章,但是我们又想使用这些内容,这个时候应该怎么办呢?这里我介绍几种解决这个问题的方法. ...

  • 雨天后视镜模糊,四种方法可以解决,立竿见影。

    雨天后视镜模糊,四种方法可以解决,立竿见影。

  • 当你厌倦了争吵时,解决恋爱关系中冲突的8种方法

    想象一下,和你的灵魂伴侣在一起,你们会永远相处下去,没有冲突,这太容易了.不好意思,这是一个幻想,因为无论你选择与谁在一起,你都会遇到问题. 这就是为什么学会一起解决冲突是如此重要. 化学反应不是你们 ...

  • 无线网信号不好?教你四种方法增强无线网覆盖,轻松解决网络盲区

    无线网信号不好?教你四种方法增强无线网覆盖,轻松解决网络盲区

  • 两层别墅设计装修,用四种方法有效解决卫生死角

    很多犄角旮旯的地方留下卫生死角,时间久了会对我们的健康产生影响,那么室内有卫生死角该怎么解决呢用四种方法解决卫生死角. 客厅避免安装开放式柜子 很多人都喜欢选择做开放式柜子,无论是做书架还是摆放工艺品 ...

  • 心理学:记忆力退化、反应迟钝怎么办?有四种方法可以解决

    每天耕耘最有趣.最实用的心理学 在很多人看来,人类常常会随着年龄增长的同时记忆力也开始逐渐退化.思维反应也开始逐渐迟钝.不少的人或许都有这样的感觉:觉得自己很笨,做什么事情都反应迟钝. 事情果真如此还 ...