[心得] 图解算法 Hash Search有这么快?(更新)

楼主: uopsdod (pcman)   2020-11-24 16:07:26
【图解算法教学】
还在用古老的二元搜寻法?是时候跟上“Hash Search” 的车尾灯了!
封面图:https://imgur.com/8GfYiTO
架构图:https://imgur.com/SbC5IKY
在我们还没学资料结构前,通常都用Linear Search找东西。
之后,我们学了二元树,开始利用二元搜寻法,大幅提升搜寻效能。
然而,在算法的世界中:
还有比Binary Search还快的东西,即是这次要介绍的“Hash Search”!
影片连结:https://bit.ly/2Uv2sBf
影片章节含有:
00:00 开头
00:02 Linear Search
00:58 Binary Search
02:38 Hash Search
04:38 结尾
[更新2020.11.25]
感谢版友们提供的建议,的确有地方我可以改进,这边直接帮大家整理出重要内容:
Linear Search : BigO(n)
Binary Search : BigO(n) ~ BigO(log(n))
Hash Seach : BigO(n) ~ BigO(1)
可以看到,在最佳状况下,Hash Search的效率是最快的,一步到位。
而之所以可以做到这样的效能,是因为Hash Seach是by Index的搜寻方式。
比如说将 29 这个数字 经过hash之后:
9 = hash(29)
就能拿到 index 9 ,我们只要去查 array[9] == 29 是否正确,就能拿到结果。
当然,现实上没这么理想,会遇到“碰撞”,也就是不同来源数字hash到同一个index
这部分将在后续实作中介绍,这次主要是帮大家抓到使用“Hash Search”的诱因。
最后补充,Binary Search由于会先将资料排序,所以更适合用在“范围搜寻”。
以上内容为影片重点萃取,有需要可以进一步参考影片完整介绍,感谢各位的建议!
作者: yuci (vu03)   2020-11-24 16:11:00
空间换时间,跟我们肝换钱一样
作者: louisnight   2020-11-24 16:16:00
std都写好写满了
作者: ckvir (ckvir)   2020-11-24 16:32:00
讲的没有很深,建议看 wiki
作者: leo0519 (leo0519)   2020-11-24 17:19:00
unordered_map :
作者: Dukkha (新手)   2020-11-24 17:28:00
感谢分享 做的很好懂 很棒
作者: GGFACE (ggface)   2020-11-24 18:17:00
赞 订阅 分享
作者: zebracoco (公子吃丙)   2020-11-24 18:51:00
搜寻了id,相似东西一直重复po,洗文章?
作者: nikolas (你花多少时间?)   2020-11-24 20:14:00
奇怪 有人愿意分享 不想看也不必要嘘吧 是生活很不顺吗?
作者: yolasiku (我的绿卡能吃吗)   2020-11-24 20:26:00
想来这骗流量腻 可惜我一次都没点进去过
作者: cytochrome (细胞色素)   2020-11-24 21:02:00
即使洗流量也无所谓,这种东西可以作为科普的入门阿,如果什么东西都说一次就会了,老师存在的价值就没那么重要
作者: MrBigTree (Mr.BigTree)   2020-11-24 21:17:00
上面真的一堆自觉很懂就不想复习的人呢
作者: Dukkha (新手)   2020-11-24 21:55:00
科普的东西很好啊 多让台湾人了解科普知识是好事。 点一次人家也赚不到0.1元
作者: zebracoco (公子吃丙)   2020-11-24 22:03:00
有人家里不顺就说人不顺,家里有人挂了吗?
作者: DrTech (竹科管理处网军研发人员)   2020-11-24 23:24:00
如果要传递知识,为什么不把内容直接放在这篇文章,最后再补充连结,达到传递与导流双重目的。而是这篇只作为导流,不顺便放知识呢。建议原PO思考一下,达到目的有时有更好的方法。不要只学那些低级的导流方法。另外binary search与hash适用时机不同,标题过度夸张,讲的好像binary search很落后一样,也让人有不专业,或只为了赚钱的观感。建议以后也可更聪明的表达,让自己更专业。总觉得这些教学文用意良好,只是被一些低级的媒体影响了传递知识的方式,蛮可惜的。最后读者的定位也很重要,想清楚这些内容谁看,自己与读者的价值会最大化呢。这时候内容的品质,以及引流的channel会更精准,少了很多负面观感。期待更好的内容,真的。
作者: labbat (labbat)   2020-11-25 02:14:00
有办法用正反器兜出来
作者: Dukkha (新手)   2020-11-25 02:17:00
有时候做影片比较好懂 文字没这么好懂 这种艰涩知识类的根本赚不到钱 真的没必要这么严苛 台湾网红一堆垃圾影片都几百万点阅 不是对台湾更糟吗
作者: loadingN (sarsaparilla)   2020-11-25 02:20:00
楼上说奶台是垃圾????
作者: Dukkha (新手)   2020-11-25 04:29:00
........ 有个弹钢琴没露脸的居然1200万点阅...
作者: DrTech (竹科管理处网军研发人员)   2020-11-25 09:43:00
感谢原PO,的站内信回复,真的是有心吧事情做得更好的人,谢谢
作者: ken771209 (伤心人不会醉)   2020-11-25 10:09:00
作者: RedDracula (喔.)   2020-11-25 12:01:00
嘘的有什么问题?不想看就滚
作者: jcaosola (纸袋)   2020-11-25 12:37:00
下这个标题大概不知道codeforces有很多题目用hashmap会 timeout 用treemap反而可以AC
作者: stosto (树多)   2020-11-25 15:32:00
这个去软件版比较合适吧
作者: jpopaholic (日音スキ)   2020-11-25 16:09:00
很简单啊,因为这版叫tech job版,不是soft job 也不是 student 版发错位置当然要嘘
作者: yamakazi (大安吴彦祖)   2020-11-25 17:41:00
map: 红黑树(二元搜寻树的一种特例unordered_map: hash,使用上不需要知道次序的建议选第二种第一种比较快但占空间
作者: bitcch (必可取)   2020-11-25 20:15:00
说真的 讲的太浅 大概是给高中生认识计概的程度
作者: j0958322080 (Tidus)   2020-11-26 00:18:00
冲流量啊嘻嘻
作者: zebracoco (公子吃丙)   2020-11-26 06:55:00
板主不处理这种和本板无关的文,到时候就一堆商业心得分享广告文洗板你要创业那就po在创业板,po在这是在欠嘘?
作者: arthas11 (straycat)   2020-11-26 10:30:00
难得看到教学型文章,给推
作者: new122851 (未若柳絮因风起)   2020-11-26 18:00:00
这里是半导体板
作者: RestInPips (R.I.P.)   2020-11-30 23:10:00

Links booklink

Contact Us: admin [ a t ] ucptt.com