【图解算法教学】
还在用古老的二元搜寻法?是时候跟上“Hash Search” 的车尾灯了!
封面图:https://imgur.com/8GfYiTO
架构图:https://imgur.com/SbC5IKY
在我们还没学资料结构前,通常都用Linear Search找东西。
之后,我们学了二元树,开始利用二元搜寻法,大幅提升搜寻效能。
然而,在算法的世界中:
还有比Binary Search还快的东西,即是这次要介绍的“Hash Search”!
影片连结:https://bit.ly/2Uv2sBf
考量有人习惯文章阅读,这边也直接帮大家整理出重要内容:
Linear Search : BigO(n)
Binary Search : BigO(n) ~ BigO(log(n))
Hash Search : 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由于会先将资料排序,所以更适合用在“范围搜寻”。
以上内容为影片重点萃取,有需要可以进一步参考影片完整介绍,
希望能多少帮到初学与需要复习的人!