哈希表
-
地址index=H(key)
-
构造方法
- 直接定制法 H(key)=a*key+b(比较简便,均匀)
- 数字分析法 H(key)=key%100000
- 分析key中的全体数据,并从中提取分布均匀的若干位或他们的组合构成全体
- 一个班级的学生都出生在同一个地区 同一年 他们的身份证的前面数位都是相同的
- 平方取中法
- 平方扩大差异,而后取中间数位作为最终存储地址
- 适合事先不知道数据并且数据长度较小
- 折叠法
- 适用于数字位数较多且事先不知道数据分布
- 比如key=123 456 789 我们可以存储在key/2=61524,取末三位,存在524的位置
- 除留余数法 H(key) = key MOD p ( p ≤ m m为表长度 )(p应为不大于m的质数或是不含20以下的质因子的合数,这样可以减少地址的重复(冲突))
-
哈希冲突(地址相同)
- 开放定制法
- 链地址法 hashmap
- 公共溢出区法 建立特殊存储空间存放冲突的数据(数据和冲突较少)
- 再散列法 多个hash函数依次使用 布隆过滤器