各位都是怎么学会 Hash Table 的

2020-11-02 23:45:33 +08:00
 Bechbaliq
有没有讲解浅显易懂的

主要是鄙人看点数学公式就开始犯迷糊了,因为看不懂。。。
4079 次点击
所在节点    程序员
17 条回复
jmc891205
2020-11-02 23:52:36 +08:00
hash table 有啥数学公式
kuangwinnie
2020-11-03 00:21:56 +08:00
画个图就明白了
misaka19000
2020-11-03 00:24:24 +08:00
ericls
2020-11-03 02:24:44 +08:00
@misaka19000 Python 的 dict 不就是个 hash table?
irytu
2020-11-03 02:54:31 +08:00
看看维基百科 照着定义基本能自己手写一个具备基本功能的简单的了 然后再去想想怎么优化(多线程读写、减少 collision 等)
cheesea
2020-11-03 03:07:26 +08:00
参考 redis hash 的实现,看完你就懂了
ericgui
2020-11-03 03:27:08 +08:00
你说的数学公式是 hash 算法吧

你先别着急啊,你先把 hash table 用着就行了啊
whincwu142
2020-11-03 07:29:14 +08:00
hash 表主要两部分:散列函数和碰撞冲突检测。涉及数学公式主要是散列函数和冲突检测中的概率计算吧,这个了解结论即可
azcvcza
2020-11-03 09:36:24 +08:00
散列分布公式难一点,hash table 不就是字典
ilumer
2020-11-03 09:50:01 +08:00
ChanKc
2020-11-03 10:06:39 +08:00
本科上课学的
slipper
2020-11-03 10:08:51 +08:00
1.Hash Table 是数据结构,用数组实现
2. Hash 是一种算法,有很多种角度的实现(快,冲撞概率小,不可逆等等),基本上学怎么实现哈希算法就等于学数学了。最简单的哈希算法就是取模。
3.综合以上,你应该先搞清楚算法和数据结构的区别。
misaka19000
2020-11-03 10:12:57 +08:00
@ericls #4 哈哈哈这我还是第一次知道
baiyi
2020-11-03 10:17:09 +08:00
哈希表本身应该很好理解,哈希冲突的解决方案也还行。难的是 hash 的计算和装载因子的计算,这些才是数学公式的部分,正常使用应该可以不用学。
wysnylc
2020-11-03 10:39:24 +08:00
学懂 ConcurrentSkipListMap,再回头学就简单多了
vision1900
2020-11-03 10:50:20 +08:00
JavaScript 里 Object 的实现一般都是 HashTable, 可以借鉴这个视频
<amp-youtube data-videoid="UOxTMOCTEZk" layout="responsive" width="480" height="270"></amp-youtube>&t=1217s
hello2060
2020-11-03 10:58:51 +08:00
hastable 不用知道啊,知道各项操作的复杂度都是 1,比 treebased table 要好就行了。就是个 dic 嘛

然后知道 key 是通过哈希函数转换到一个 index 上,知道一般的实现就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/721188

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX