散列表查找(哈希算法)的定义与实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了散列表查找(哈希算法)的定义与实现相关的知识,希望对你有一定的参考价值。
1 散列表查找定义
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系,使得每个关键字key对应一个存储位置。
存储位置=f(关键字)
对应关系称为散列函数,又称为哈希(Hash)函数。
采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表。散列技术既是一种存储方法,也是一种查找方法。
散列函数可能会把两个或两个以上的不同关键字映射到同一地址,称这些情况为冲突,这些发生碰撞的不同关键字称为同义词。
2 散列函数的构造方法
3.1 直接定址法
对于下图所示的0-100岁的人口数字统计表,对年龄这个关键字就可以直接用年龄的数字作为地址,此时f(key)=key
。
如果我们要统计的是1980年后出生年份的人口数,如下图所示,我们对出生年份这个关键字可以用年份减去1980来作为地址。此时f(key)=key-1980
。
直接去关键字的某个线性函数值为散列地址,散列函数为:
直接定址法的散列函数的优点是简单、均匀,也不会产生冲突,但是需要提前知道关键字的分布情况,适合查找表较小且连续的情况。
3.2 除留余数法
除留余数法是最常用的构造散列函数的方法,假设散列表表长为m,取一个不大于m但最接近或等于m的质数p,散列函数为:
数据结构 散列表