哈希

知识点总结

Posted by GG on February 25, 2018

哈希

  1. 常见==哈希冲突解决办法==: a.开放地址法【将所有结点均放在散列表[0….m-1]中】,包括线性探测法、线性补偿探测法、随机探测法 b.链地址法(拉链法)c.二次探测法 d.伪随机探测法 e.再散列(双重散列,多重散列)f.建立一个公共溢出区.

  2. 常见的==散列函数==有:直接定址法,数字分析法,平法取中法,取余法,折叠法,随机法.
  3. 单旋转法是==建立散列函数==的一种方法:将最后一位数,旋转放置到第一位.
  4. 与开放定址法相比,拉链法其中==优点==有: 1、拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短; 2、由于拉链法中各链表上的结点空间是动态申请的,故它更适合于造表前无法确定表长的情况。
  5. hash索引仅满足“=”、“IN”和“<=>”查询,不能使用范围查询. 因为hash索引比较的是经常hash运算之后的hash值,因此只能进行等值的过滤,不能基于范围的查找,因为经过hash算法处理后的hash值的大小关系,并不能保证与处理前的hash大小关系对应。
  6. 对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用。
  7. 线性探测是出现冲突后开始向后探测一个位置,第一个关键字不用探测,所以从第二个关键字映射时要做1次探测,第三个关键字时要做2次探测,故为==1+2+…+n-1==。
  8. 为提高散列( Hash )表的查找效率取决于散列函数、处理冲突的方法和装填因子。
  9. 哈希法的==平均查找长度随负载因子的增大而增大==。
  10. 使用除留余数法的一个经验是,若散列表表长为m,通常p为==小于或等于表长(最好接近m)的最小质数或不包含小于20质因子的合数==。