hash 表
hash 表
2011年04月07日
hash 表是基于主键的一个特殊数组。
ex:
hash(k)->i
we find table(i) the value we stored in.
android C库的hash原理:
根据kluth 3 6.4的原理,使用两次hash的开放式寻址。
1. hash表的大小定为一个给定比大小大的一个质数(具体求法是先定为奇数(这样就可以不用从2开始了),在求出稍大于它的质数,求质数的方法是从3开始,到根号目标大小为止)。
选为质数的原因是防止哈希结果只是字符集中字符的简单叠加,实际上是要求M不能被a^n+k整除,a是字符集的元,这样的话,M就不能是3的倍数。
2.开放式寻址是相对于拉链链表而言的,拉链链表实际上是以纵横的形式,或者是将横列排到列末。
而开放式寻址是直接探测下一个表项是否为空。
3.两次hash的做法:
3.1 hash1(k) -> i
hash2(i) -> c
i-c是否为空,若不为空则填入,若i-cc库用法
猜你喜欢
转载自zn108zn.iteye.com/blog/1364675
今日推荐
周排行