[心得] 圖解演算法 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