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

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

大家好,又见面了,我是你们的朋友全栈君。

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

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

给个原始数据如上图。

下面详细解析。

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


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


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

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

估计讲的很详细啦吧。


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

下面是一个总览的链接:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146387.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树

    HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树

    2022年1月25日
  • 字节跳动 java面经_字节跳动Java面经(已offer)[通俗易懂]

    5.15一面(3点开始,80分钟)1.自我介绍,聊了聊学校近况2.Java集合框架,看了哪些源码,arraylist、linkedlist原理,让你实现一个hashmap机会如何设计(没让手写????)3.线程池的执行过程、核心参数以及常用的几个线程池(感觉每次面试都会问????)4.JVM的相关知识,OOM如何定位,说几个虚拟机指令以及虚拟机栈可能会发生什么错误,四种引用类型5.Java并发,…

    2022年4月16日
  • 网页木马是什么原理啊_浏览器中了木马怎么办

    网页木马是什么原理啊_浏览器中了木马怎么办网页挂马的实质是利用漏洞向用户传播木马下载器,当我们更清楚了这点就能做到有效的防范。网页木马就是网页恶意软件威胁的罪魁祸首,和大家印象中的不同,准确的说,网页木马并不是木马程序,而应该称为网页木马“种植器”,也即一种通过攻击浏览器或浏览器外挂程序(目标通常是IE浏览器和ActiveX程序)的漏洞,向目标用户机器植入木马、病毒、密码盗取等恶意程序的手段首先明确,网页木马实际上是一个HTML网页,与其

    2022年10月30日
  • maven找不到包但是确实引入了_idea写python好吗

    maven找不到包但是确实引入了_idea写python好吗直接上图,记住选中的位置要设置为Resouce,不然from导入时,会导致pycharm自动从cronjob根路径导入。放linux中运行时,涉及到调用的时候,就报错cronjob包找不到,因为只能找到当前执行的python文件下开始找,而不能找到父包设置位置在这里:…

    2022年8月25日
  • 用java web实现聊天室_java web实现简单聊天室「建议收藏」

    用java web实现聊天室_java web实现简单聊天室「建议收藏」目标servlet、jsp实现简单聊天室,用户通过浏览器登录后进入聊天室,可发送消息进行群聊,点击聊天信息框中的用户名可实现拍一拍功能。基础知识数据的存取setAttribute/getAttributerequest请求对象:有效时间短ServletContext上下文对象:一直存在于服务器,存储公有、共享数据Session会话对象:独立网站默认页面一般是index.jsp实现思路1….

    2022年6月22日
  • Samba共享服务_NFS共享存储

    Samba共享服务_NFS共享存储1.配置SMB共享(Linux与Windows)Samba服务基础•Samba软件项目–用途:为客户机提供共享使用的文件夹–协议:SMB(TCP139)、CIFS(TCP445)•所需软件包:samba•系统服务:smb########################################################管理共享账号•Samba用户—…

    2022年9月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号