关注
1. 首先我们要知道哈希是什么? 哈希(Hash)一般叫做散列,意思就是把一堆任意长度的字符串、数字或者二进制输入通过一定的算法(非常多的哈希算法)生成固定长度的一个数字(字符串)。因为算法原因,不同的输入就会得到不同的哈希值。 2. 其次我们要知道哈希表是什么? 哈希表(Hash Table)一般叫做散列表,就是通过把键值计算出Hash值后,通过Hash值映射到表里面的某个位置。那么同样的键值,下次访问或者修改都是同一个映射位置,不同的键值因为计算出Hash值不一样映射的位置也会不同。 3. 然后什么是哈希冲突(哈希碰撞)? 因为哈希值是通过一定算法生成的,那么就有一定的可能出现不同的输入得到的Hash值是一样的,就算我们可以通过调整算法尽量减少这种情况,但是也不可完全避免。发生这种情况后,我们就会出现两个不同的键值被映射到同一个位置了,这就是哈希冲突。 怎么解决? 开放定址 1、线性探测 出现Hash冲突后,依次查询这个键值后面的地址,找到一个空的或者全部查完没找到。 2、二次探测 出现冲突后,对这个键值后面的地址或者前面的地址进行平方后查询。 再哈希 构建多个Hash算法函数,出现冲突就用其他Hash算法进行Hash,直到不冲突为止。 链表法 也叫开链,C++的map就是使用这种方法,就是对每个位置新增一个链表,添加元素到链表中,只要链表元素不多,效率都还行。
查看原帖
点赞 评论
相关推荐
07-02 15:32
南京信息工程大学 算法工程师 
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
30348次浏览 629人参与
# 机械人集合!你是什么工程师? #
15291次浏览 88人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
25778次浏览 210人参与
# 秋招什么时候开投比较合适? #
18588次浏览 272人参与
# 发工资后,你做的第一件事是什么 #
67486次浏览 228人参与
# 如何准备秋招 #
17741次浏览 346人参与
# 百度工作体验 #
218953次浏览 1956人参与
# 机械人与华为的爱恨情仇 #
116123次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25420次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73541次浏览 514人参与
# 不考虑转正,实习多久合适 #
31528次浏览 145人参与
# 影石Insta360求职进展汇总 #
123084次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57224次浏览 526人参与
# 24届的你们都什么时候入职? #
59918次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
255910次浏览 1479人参与
# 实习,不懂就问 #
41326次浏览 641人参与
# 你们公司几号发工资 #
20456次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102399次浏览 958人参与
# 每个月的工资都是怎么分配的? #
24683次浏览 408人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28966次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7316次浏览 130人参与