哈希表
什么是哈希表
1. 哈希表是用来解决什么问题的?
解决查找效率问题:查找效率依赖于查找过程中进行比较的次数,通过(哈希函数)构建一种对应关系,使得可以不比较直接找到要找的记录。
就比如一个二维数组,数组的值和下标是一一对应的,知道下标就能找到对应的值;还比如一个函数,一个x对应一个y,知道 x 和 f(x) 就能得到 y 。当多个 x 对应一个 y 的时候就是发生了哈希冲突。
2. 哈希表:
根据设定的Hash函数H(key)【构造】和处理冲突的方法【处理冲突】,将一组关键字映像到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“像”【x】作为记录在表中存储的位置,这种表便称为哈希表,这一映像过程【构造H(key)过程】称为哈希造表或散列,所得存储位置称为哈希地址或散列地址。【就像函数映射】
构造方法
1.直接地址法
H(key) = key 或 H(key) = a*key+b
一次函数,key和H(key)一一对应,也就是说地址集和和关键字集合的大小相同。
好处是不会带来哈希冲突。
缺点是实际中能应用的地方较少。
2.平方取中法(较常用)
关键