一、散列表(Hash Table, 哈希表)?
维基百科定义:根据关键字(key value)直接访问在内存存储位置的数据结构。
通俗的讲,为了加快查找速度,我们通过同一个映射函数F,建立关键字和记录的存储位置的关系,相应地,记录的连续存储空间称为散列表或哈希表。关键字对应的记录存储位置
称为散列地址。
存储位置 = F (关键字) (函数法则F可自定义)
二、散列函数构造方法
构造原则:a. 计算简单,散列函数计算时间应该尽量少。
b. 散列地址分布均匀,不仅保证存储空间的有效利用,并减少处理冲突而耗费的时间。
1. 直接定址法
直接取关键字的某个线性函数值为散列地址,即 F( key ) = a * key + b (a, b为常数). 适合:需事前知道关键字分布情况,并且查找表较小且连续的情况。此法不常用。
举个例子,比如,要对0~100岁的人口数字进行统计,我们选用“年龄”这个关键字,直接用年龄的数字作为地址,F(KEY) = KEY.
地址 | 年龄 | 人数 |
00 | 0 |