您的位置:首页 > 其它

Hash冲突的解决--暴雪的Hash算法

2013-09-09 16:07 471 查看
今天上网的时候看到了这种算法,简单记录一下。

普通的hash解决hash冲突的方法是使用链表,比如java中的HashMap。HashMap中只使用了一次hash,但暴雪hash算中用到了三个hash,三个hash都重叠的概率有多大?1:18889465931478580854784,一般的应用里怎么都够用了。

简单描述一下算法过程,其实很简单,也懒得去写代码了。

计算出字符串的三个哈希值(一个用来确定位置,另外两个用来校验)

察看哈希表中的这个位置

哈希表中这个位置为空吗?如果为空,则肯定该字符串不存在,返回-1。

如果存在,则检查其他两个哈希值是否也匹配,如果匹配,则表示找到了该字符串,返回其Hash值。

移到下一个位置,如果已经移到了表的末尾,则反绕到表的开始位置起继续查询 

看看是不是又回到了原来的位置,如果是,则返回没找到

回到3。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hash 算法