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