“散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
哈希表可以根据一个KEY值来直接访问数据,因此查找速度快;哈希表实质就是一个数组;hash函数就是根据key计算出应该存储地址的位置,而哈希表是基于哈希函数建立的一种查找表
哈希函数
用来定义记录关键字与记录点存储位置的对应关系的函数。其自变量是记录的关键字,函数知识记录存储位置。
哈希地址
由哈希函数求出的记录存储位置
哈希表
也叫散列表,试讲记录按哈希函数确定的位置存放而构成的表
散列
散列既是一种查找技术,也是一种存储技术。散列主要是面向查找的存储结构,散列只是通过记录的关键码定位该记录,没有完整的表达记录之间的逻辑关系。
冲突
对不同的关键字可能的道德同意哈希地址的现象叫做冲突。
同义词
具有相同函数值的关键字对该哈希函数来说就称为同义词
应解决两个问题:
1.哈希函数应是一个压缩映像函数,应具有较 大的压缩性以节省存储空间;
2.哈希函数应具有较好的散列性,以尽量减少 冲突的出现。
直接定址法适应情况:事先知道关键码,关键码集合不是很大且连续性较好。
优点:不会产生冲突
缺点:占用连续空间,空间效率低
平方取中法适应情况:事先不知道关键码的分布,且关键码的为数不是很大。
适应情况:事先不知道关键码的分布,且关键码的位数很多。