定义
Hash表是一个查找表,根据key可以直接找到对应的数值,查询一个元素的复杂度是O(1),常数算法复杂度。
构建Hash表需要做两个工作
- 选择好的hash函数
- 处理冲突的方法
因为很难找到一个都不会产生冲突的hash函数,冲突的解释是不同的key,相同的函数值。hash表是一个查找表。
一般性介绍
哈希函数的方法
这对key是数值构建的方法有:直接地址、数据分析、平方取中法(减少冲突)、折叠法(适用key特别长)、除留余数法(对p进行限制,不能包含20以下的质因子)、随机数法(random为为随机函数,用于对长度不等的关键字构建函数)。
总的原则是将产生冲突的可能性尽可能的小,而且哈希函数要简单(计算量小)。
冲突的处理方法
“处理冲突”的实际含义是:为产生冲突的地址寻找下一个哈希地址。通常有:开放地址法、再哈希法、链地址法、建立一个公共区。