哈希

哈希加快查找的原理
将字符串的key,转成整数,使用整数找到对应的value
Hash算法将字符串转成整数,同样的Hash值得 key:value会放到一个集合里面,由于Hash能使得不同的字符串尽量有不同的整数值
将海量的数据,按照HASH值分成不同的集合,先找集合,再找key–>value,大大提高效率

或者说
通过获得你要排序的序列长度(m),
然后得出比这个 m 大的素数作为数组的长度(n),
然后对接下来的输入数据(D)进行取模运算(v=D%n),
然后取模之后的数据存到数组中。
字符串哈希
自然溢出法
这种方法是利用数据结构unsigned long long的范围自然溢出:即当存储的数据大于unsigned long long的存储范围时,会自动mod 264−1,就不用mod其他质数来保证唯一性了。

Hash公式
unsigned long long Hash[n]
hash[i]=hash[i−1]∗p+idx(s[i]);
注意:这里的p一定要是个质数

单Hash法
相当于自然溢出法没有了自动取模的操作,所以需要自己进行取模操作。但是这种Hash方法在模数较小的时候的稳定性不一定得到保证,所以在这个方面不如其他方法。

Hash公式
hash[i]=(hash[i−1])∗p+idx(s[i])%mod;
注意:这里的p和mod都是质数,且满足p<mod。最好在选取的时候把p和mod的值取大一点。

举例
如取p=13,mod=101,对字符串abc进行Hash

hash[0]=1;
hash[1]=(hash[0] × 13 + 2)%101=15;
hash[2]=(hash[1] × 13 + 3)%101=97;
所以最终字符串abc的hash值就是97

Hash方法
hash1[i]=(hash1[i−1])∗p+idx(s[i]) % mod1
hash2[i]=(hash2[i−1])∗p+idx(s[i]) % mod2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值