哈希表大小为何是素数时冲突最少

在构造哈希函数的时候,可以利用求余的方法求出关键字所在的地址,其中,模最好是素数
这随笔更像是读后感

这个链接解释的很明白(https://blog.csdn.net/zhishengqianjun/article/details/79087525

作者举例了五个数列,通过对五个数列的实验,验证了作者的想法:取模运算的冲突与因子相关,因子越多,越容易冲突

事实确实如此,但是看完我好像没有恍然大悟的感觉..(可能太长了没特别仔细看吧

  • 看完后,想了几句话说服了自己(下图为例

    1,4,7,10..关键字映射到数组其实就是:
    放完第一个数据后,每放一个数据,就往后走三步。

    • 表格一数组size为6,(1+3)%6=4,(4+3)%6=1。后面在位置14之间死循环,不均匀
    • 表格二数组size为7,(1+3)%7=4,(4+3)%7=0,(0+3)%7=3,(3+3)%7=6..均匀分布

    当数组size为7的时候均匀分布,6的时候死循环。出现死循环因为:每次走3步,3是数组size,6的因数
    因此:输入数据之间的跨度不能是数组size的因数,否则空间不均匀
    输入数据之间的跨度我们不能控制,因此只能让数组size的因数几乎没有,而素数就没几个因数,所以数组的size选择素数比较好

posted @   穿过雾的阴霾  阅读(198)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示