

新闻资讯
哈希游戏| 哈希游戏平台| 哈希游戏APP哈希游戏- 哈希游戏平台- 哈希游戏官方网站
d-left hashing中的d是多个的意思,我们先简化这个问题,看一看2-left hashing。2-left hashing指的是将一个哈希表分成长度相等的两半,分别叫做T1和T2,给T1和T2分别配备一个哈希函数,h1和h2。在存储一个新的key时,同 时用两个哈希函数进行计算,得出两个地址h1[key]和h2[key]。这时需要检查T1中的h1[key]位置和T2中的h2[key]位置,哪一个 位置已经存储的(有碰撞的)key比较多,然后将新key存储在负载少的位置。如果两边一样多,比如两个位置都为空或者都存储了一个key,就把新key 存储在左边的T1子表中,2-left也由此而来。在查找一个key时,必须进行两次hash,同时查找两个位置。
这个问题很值得讨论,首先是你采用什么数据类型来存储手机号,如果是用数值型,那么理论上手机号码是随机分布,因此最简单的取摸就可以保证散列均匀,(当然了,int型数值是不能存放完整手机号,因此可以采用多级hash的方法,这就有点类似于trie树,但是和trie树还是有本质区别)。如果采用字符串型,那么普通的MD5,SHA1都是可选的方法,另外,trie树的结构效率也是很高的,而且不存在碰撞问题。本系列后面的文章会讲到Trie树的结构。