概念:
哈希表(散列表)通过将关键码key映射到表中的某个位置上来存储元素,然后根据关键码来访问元素。
常用hash函数
- 除留余数法
- 线性探测
- 二次探测
- 开链法,在大部分情况下基本就是用开链法
解决方式
开放地址法
基本思想是:当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。
如:线性探测再散列、二次探测再散列再哈希法
当发生冲突时,使用第二个、第三个、哈希函数计算地址,直到无冲突时。缺点:计算时间增加。比如上面第一次按照姓首字母进行哈希,如果产生冲突可以按照姓字母首字母第二位进行哈希,再冲突,第三位,直到不冲突为止。链地址法
将所有关键字为同义词的记录存储在同一线性链表中。建立一个公共溢出区
假设哈希函数的值域为[0,m-1],则设向量HashTable[0..m-1]为基本表,另外设立存储空间向量OverTable[0..v]用以存储发生冲突的记录。