1 哈希解决冲突的三种方法
- 开放定址法
也称再散列法,其基本思想是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi
具体有三种:
线性探测再散列:冲突发生时,顺序查看表中下一单元,直到找出一个空单元
二次探测再散列:冲突发生时,在表的左右进行跳跃式探测。
伪随机探测再散列:伪随机数序列。 - 再哈希法
同时构造多个不同的哈希函数:
Hi=RH1(key) i=1,2,…,k
当哈希地址Hi=RH1(key)发生冲突时,再计算Hi=RH2(key)……,直到冲突不再产生。 - 链地址法
这种方法的基本思想是将哈希地址相同的元素构成一个单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。 - 建立公共溢出区
这种方法的基本思想是:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。
2 一致性哈希
Consistent hashing 的基本思想就是将元素和服务器都映射到同一个环形hash空间中,并且使用相同的 hash算法。