Hash Table 之 Collision resolution

Hash Table相关术语:

A hash table uses a hash function to compute an index into an array of buckets or slots, from which the desired value can be found

1. Separate chaining

1.1 Separate chaining with linked lists

Hash Table 之 Collision resolution_第1张图片
separate chaining with linked lists

bucket只存储后面list的头节点

1.2 Separate chaining with list head cells

Hash Table 之 Collision resolution_第2张图片
separate chaining with list head cells

bucket存储第一个元素,其余的元素再存在后面的list

2. Open addressing

Hash Table 之 Collision resolution_第3张图片
open addressing with linear probing

数据都存在bucket中,没有后面的链表结构, 根据hash找到的并不是最终的数据,所以称为open

其中对于具有相同hash值的数据,寻找下一个存放地址的方法可以分为3中:

  1. Linear probing: 搜寻地址之间等间隔递增 (上图表示的是间隔为1时的情况), 类似
  2. Quadratic probing: 搜寻地址之间的间隔为二次多项式的值+由原hash函数计算出的初始值, 类似
  3. Double hashing: 搜寻地址之间的间隔由另一个hash函数计算而出

ref:

  1. https://en.wikipedia.org/wiki/Hash_table#Collision_resolution
  2. https://en.wikipedia.org/wiki/Open_addressing
  3. https://en.wikipedia.org/wiki/Quadratic_probing

你可能感兴趣的:(Hash Table 之 Collision resolution)