
散列表
文章平均质量分 65
bertzhang
这个作者很懒,什么都没留下…
展开
-
关于散列函数
在构建hash表时,需要用到hash函数和解决hash冲突的问题。hash函数的构造,常用的有两种方法:1求模的方法;2乘法的方法1求模的方法相关要点为了能够使hash值分布更加均匀,通常会选择一个质数(素数)作为除数,而且最好不要选取2的指数作为除数,因为key/2^p作为hash值,实际得到的结果只和key的后p位有关,而和key的其他位没有关系,因此不一定会有很好的均衡效果,例如原创 2012-02-13 14:26:53 · 1202 阅读 · 0 评论 -
HashTable的实现测试
1)冲突解决方式,通过链表解决2)slot数组中是否保存数据的问题,这个是一个容易让人困惑的问题,解决方案是slot不是HashNode的数组,而是一组指向HashNode的指针,因此slot数组中肯定不会保存数据3)slot大小的选择,在HashTable的构造函数中设定大小,但hash函数使用了乘法策略,因此需要找到一个2^p>用户给的size的p,以2^p作为size,但存在这样的情原创 2012-02-24 22:30:11 · 854 阅读 · 0 评论 -
关于Hash的总结
hash函数 hash函数常用的是mod 素数,或者使用乘法策略,取某些位,这些策略直接影响到hash table的resize,如果是mod素数的话,只能按素数来递增,如果是取乘法方法,只能以2^p来递增。 参考文献[1][2]等给出了很多,常用的字符串hash函数,但更有价值的还包括下面这两个: murmur hash[3][4],其中[3]无法直接访问,不过本文的例子中有具原创 2012-02-27 14:22:23 · 1662 阅读 · 0 评论