IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 哈希冲撞是什么?怎么解决? -> 正文阅读

[数据结构与算法]哈希冲撞是什么?怎么解决?

哈希冲撞
其实哈希表这个数据结构就像一个函数一样,传入一个key,返回一个结果经过哈希函数计算的一个值,那么我们的要求就是当我们输入2个相同key的时候,返回的值应该是相同的,当我们输入的key是不同的时候,返回的一个值应该是相同的,这个时候,我们设计的哈希表才算是成功了。
但是实践的时候我们会发现,很多时候,我们会发现输入2个不同的key,会返回2个相同的值,这个时候就出现了哈希冲撞。

我们解决的方法有2种

  1. 开放寻址法:

    只要出现哈希冲撞,就通过重新探测新的位置的方法来解决冲突。
    当我们向哈希表插入数据的时候,一个数据经过哈希函数的计算之后,对应的位置已经有了数,那么它会直接从这个位置开始,在数组中依次查找空的位置,直到找到新的位置为止。
    当我们向哈希表中查找一个值的时候,我们先经过哈希函数计算出对应的值,然后和数组中对应的位置去比较,如果相同,就说明这就是我们要查找的元素,否则,我们就从这个位置之后的地方顺序查找,直到找到对应的数据,如果没有,就说明这个值不存在。
    当我们在哈希表中删除一个值的时候,不能直接取把这个地方的值变为0,而是要把这个地方标记为deleted,这是为了查找的准确,当我们查找到这个位置为deletde的时候,我们会继续往下遍历,不会停下。

2.链表法:
其实最底层就是一个桶中放一个链表,这个桶其实也可以说成是数组,也就是当我们经过哈希函数算出值之后,如果出现重复,那么我们就将重复的数放到链表中,然后插入,删除,查找就是先找到这个桶,然后再到这里面的链表中去寻找。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:21:25  更:2021-08-14 14:24:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:22:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码