数据结构之哈希表
哈希表(散列表查找)概述
之前的顺序查找、有序查找,都是通过将查找的值与数据集进行比较,最终找到数据的相对下标。而哈希表则是不通过比较,直接通过关键字key找到数据集中的存储位置。
定义
通过一个函数f,使得
存储位置=f(关键字)
不通过遍历、比较就能把获取查找信息,这种存储技术叫散列技术
散列技术是在记录的存储位置和关键字之间建立一个确定的对应关系f,使得每个关键字对应一个存储位置。
将对应关系F称为散列函数,又称为哈希(Hash)函数,采用散列技术存储的连续存储空间称为散列表或哈希表。
查找步骤
1、按照散列函数存储数据
2、按照散列函数计算地址
散列技术既是一种存储方法,又是一种查找方法,其是面向查找的一种存储结构
优缺点
冲突:两个不同的关键字,散列函数求得的地址一样,这种情况称为冲突,两个关键字为散列函数的同义词。
构造散列函数
两个原则:
- 计算简单
- 散列地址分布均匀
1、直接定址法
取关键字中某个线性函数值作为散列地址。
2、数字分析法
抽取:抽取关键字中一部分来计算存储位置的方法,是常用手段。
数字分析法适合处理关键字位数较大情况。
3、平方取中法
4、折叠法
5、除留取余法
最常用构造散列函数的方法。