关闭

详细图解什么叫平方探查法即二次探测再散列和线性探测再散列(数据结构 哈希函数 哈希冲突)

标签: 2次平方再散列线性探测再散列平方探测再散列哈希冲突哈希函数
19600人阅读 评论(4) 收藏 举报
分类:

虽然上文有提到怎么解释的开放地址法处理hash冲突,但是当时只是给了个简单的图,没有 详细讲解一下,
我当时有点不明白,回头查查资料,然后亲自动手,整理了一下。
然后我就三幅图详细讲解一下:
什么叫线性探测再散列
什么叫平方探测再散列(二次探测再散列);

老师的ppt吧。


给个原始数据如上图。

下面详细解析。



上面的是线性探测再散列。这个简单。



这个就是那个2次平方再散列啦。

估计讲的很详细啦吧。


这个只是单纯的看,是不行的,你只是看到,有三个数据在按一定的算法(也就是mod 11 取余)散列到数组上的时候,看到有三个数据产生冲突啦。那么为了让这些数据更好的全部都能落在这个数组上,更好的利用这个数组,不浪费空间,就要去充分利用未分配到数据的数组上的其他位置。那么这就是解决冲突的需求。线性探测法:刚刚开始的时候,数据未冲突的时候,都按照取余的结果挨个按自己的取余结果,可以理解为你上学分班时候,你选座位。当你要去的座位,没人选的时候,你就坐上去,然后这个位置就被选过了,下次如果还有人和你一样,也选了这个座位,那么,他就冲突了。按照线性探测法的做法是:他本来是要坐你的位置的,但是,你已经坐了,那么,他只能以你为基准,查看你的座位的下一个,如果没人就坐下,如果有人,继续找下一个。当他也坐下来之后,后面再来的。发现自己的位置,被这个冲突的哥们占位了,那么,没办法,只能按刚刚那哥们的做法,继续找自己的位置。直到这个班级的所有位置都有人坐,那就OK。对应到这hashmap上就是 把这个数组的所有位置都给占满咯。这个线性探测和平方探测的区别就是在冲突的哥们找自己的位置的差别,一个是挨个查找;一个是高级点,或+n的平方,或-n的平方。都是为了占满教室的位置。


下面是一个总览的链接:

java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区



9
2
查看评论

哈希表,二次探测再散列

“任何你真正想得到的一定是值得坚持的!”
  • qq_33044095
  • qq_33044095
  • 2016-10-09 11:57
  • 3001

散列表(四):冲突处理的方法之开地址法(二次探测再散列的实现)

前面的文章分析了开地址法的其中一种:线性探测再散列,这篇文章来讲开地址法的第二种:二次探测再散列 (二)、二次探测再散列 为改善“堆积”问题,减少为完成搜索所需的平均探查次数,可使用二次探测法。 通过某一个散列函数对表项的关键码 x 进行计算,得到桶号,它是一个非负整数。  ...
  • Simba888888
  • Simba888888
  • 2013-07-31 17:11
  • 14295

java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

一)哈希表简介 非哈希表的特点:关键字在表中的位置和它之间不存在一个确定的关系,查找的过程为给定值一次和各个关键字进行比较,查找的效率取决于和给定值进行比较的次数。     哈希表的特点:关键字在表中位置和它之间存在一种确定的关系。 哈希函数:一般情况下,需要在关键字与它...
  • qq_27093465
  • qq_27093465
  • 2016-08-21 22:13
  • 12858

构造哈希表之二次探测法

HashTable-散列表/哈希表 是根据关键字(key)而直接访问在内存存储位置的数据结构。 它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列(哈希)函数,存放记录的数组叫做散列表。 构造哈希表的几种方法 1.直接定址法(取关键字的某个线性函数为哈希地址) 2...
  • xyzbaihaiping
  • xyzbaihaiping
  • 2016-06-08 01:19
  • 10593

用二次探测再散列法解决冲突建立哈希表并查找

  • 2013-04-13 20:39
  • 94KB
  • 下载

用二次探测再散列法解决冲突建立哈希表并查找

  • 2014-07-21 11:20
  • 289KB
  • 下载

散列表(四):冲突处理的方法之开地址法(二次探测再散列的实现)

前面的文章分析了开地址法的其中一种:线性探测再散列,这篇文章来讲开地址法的第二种:二次探测再散列 (二)、二次探测再散列 为改善“堆积”问题,减少为完成搜索所需的平均探查次数,可使用二次探测法。 通过某一个散列函数对表项的关键码 x 进行计算,得到桶号,它是一个...
  • Al_xin
  • Al_xin
  • 2014-09-09 14:06
  • 647

二次探测再散列散列表 源代码(数据结构)

/**********散列表**********/ #ifndef HashTable_ #define HashTable_   #include "Except.h"   template class E,...
  • zhanghong056
  • zhanghong056
  • 2014-08-05 13:45
  • 724

1023. 简单哈希2 哈希冲突的平方探测法

Description  哈希表也称为散列表,它是通过关键码值而进行直接访问的数据结构。即它通过把一个关键码映射到表中的一个位置来访问记录,以加快查找速度。当然了在做关键码映射的时候,难免会把不同的关键码映射到相同的位置,这时冲突就产生了。使用平方探测法(Quadratic Pr...
  • u012915503
  • u012915503
  • 2013-11-23 23:13
  • 3685

平方探测法hash

数据结构实验之查找五:平方之哈希表 Time Limit: 400MS Memory Limit: 65536KB Problem Description 给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,...
  • sexgeek
  • sexgeek
  • 2016-12-18 15:55
  • 1268
    老铁们,支付宝扫一扫,领红包啦!
    扫一扫,红包是你的!对,你没看错,天天都有效,可以直接保存,天天扫,天天拿。不信?搞一哈,就造啦!!!
    个人资料
    • 访问:2651839次
    • 积分:22134
    • 等级:
    • 排名:第397名
    • 原创:332篇
    • 转载:82篇
    • 译文:4篇
    • 评论:1585条
    大 师 兄 说
    • 交流群:321964905(新建)
    • 我扣扣:1181415316
    • 我邮箱:cmshome@163.com
    • 我格言:"习惯就好"坑了多少人
    • 暂时在:帝都
    • 曾工作:成都
    • 我爱好:海贼王
    • 我爱好:英雄杀
    • 我家乡:济源市
    • 我爱好:写bug
    • 求求求:有问题就留言吧
    • 为啥呢:大师兄是一直在维护的
      你觉得本博文对你有用吗 有用,那就请点赞留言。 暂时没用,也请不要踩。
    博客专栏
    最新评论