哈希表(又称为散列表),是一种线性表的存储结构。哈希表由一个顺序表(数组)和一个哈希函数组成。哈希函数h(k)将k作为自变量,返回元素的存储下标。
一、直接寻址表
如果某应用要用到一个动态集合,其中每个元素都是全域U={0,1….,m}中的一个关键字 为表示动态集合,使用数组。称为直接寻址表,记为T[m],其中每个位置称为一个槽slot,对应于全域中的一个关键字。槽k指向集合中一个关键字为k的元素。如果该集合中没有关键字为k的元素,则T[k]=NIL;
1、直接寻址技术优点
当关键字的全域U比较小时,直接寻址是一种简单而有效的方法。
2、直接寻址技术缺点
当域U很大时,需要消耗大量内存,很不实际;
如果域U很大而实际出现的key很少,则大量空间被浪费;
无法处理关键字不是数字的情况。
二、哈希表
在直接寻址表上加了一个哈希函数就成了哈希表。
1、将直接寻址表改进为哈希表
直接寻址表:key为k的元素放到k的位置上。
改进方法:
(1)构建大小为m的寻址表T;
(2)key为k的元素放到h(k)位置上;
(3)h(k)是一个函数,其将域U映射到表T[0,1,...,m-1]。