如果我们现在要对0~100岁的人口数字统计表,如表8-10-1所示,那么我们对年龄这个关键字就可以直接用年龄的数字作为地址。此时f(key)=key。
地址 | 年龄人数 |
---|---|
0 | 0500万 |
1 | 1600万 |
2 | 2450万 |
…… | …… |
2020 | 1500万 |
…… | …… |
如果我们现在要统计的是80后出生年份的人口数,如表8-10-2所示,那么我们对出生年份这个关键字可以用年份减去1980来作为地址。此时f(key)=key-1980。
地址 | 出生年份 | 年份人数 |
---|---|---|
0 | 1980 | 1500万 |
1 | 1981 | 1600万 |
2 | 1982 | 1300万 |
…… | …… | …… |
2000 | 2000 | 800万 |
…… | …… | …… |
也就是说,我们可以取关键字的某个线性函数值为散列地址,即
f(key)=a×key+b(a、b为常数)
这样的散列函数优点就是简单、均匀,也不会产生冲突,但问题是这需要事先知道关键字的分布情况,适合查找表较小且连续的情况。由于这样的限制,在现实应用中,此方法虽然简单,但却并不常用。