一.哈希表
哈希表是一种以键对应值(key-indexed) 来存储数据的结构,只要输入要查找的键即key,即可查找到对应的值。
将键作为索引,这样就可以快速访问任意键的值。
1.1构造方法
原文链接https://blog.csdn.net/qq_40803710/article/details/80945617
哈希函数的构造原则是:函数本身便于计算、计算出来的地址分布均匀(即对任意K,f(K)对应不同地址的概率相等)。
1.数字分析法:
可以从关键如果事先知道关键字集合,并且每个关键字的位数比哈希表的地址码位数多时,可以从关键字中选出分布较均匀的若干位,构成哈希地址。
例如,有80个记录,关键字为8位十进制整数d1d2d3…d7d8,如哈希表长取100,则哈希表的地址空间为:00~99。
假设经过分析,各关键字中 d4和d7的取值分布较均匀,则哈希函数为:h(key)=h(d1d2d3…d7d8)=d4d7。例如,h(81346532)=43,h(81301367)=06。
相反,假设经过分析,各关键字中 d1和d8的取值分布极不均匀, d1 都等于5,d8 都等于2,此时,如果哈希函数为:h(key)=h(d1d2d3…d7d8)=d1d8,
则所有关键字的地址码都是52,显然不可取。
2.平方取中法:
当无法确定关键字中哪几位分布较均匀时,可以先求出关键字的平方值,然后按需要取平方值的中间几位作为哈希地址。
这是因为:平方后中间几位和关键字