算法-哈希

哈希

解决哈希冲突

开放定址法

  • 线性探测法:当冲突发生时,按照某种线性序列在散列表中查找下一个空的位置来插入数据。
  • 二次探测法:使用二次函数来计算下一个插入位置。
  • 随机探测法:使用随机生成的序列来查找下一个空的位置。

再哈希法

  • 当冲突发生时,使用另一个哈希函数计算另一个哈希值,直到找到未被占用的位置。

链地址法

  • 将哈希值相同的元素存储在同一个链表中,需要遍历链表以进行查找。

建立公共溢出区

  • 将哈希表分为基本表和溢出表,当冲突发生时,将冲突的元素存放在溢出表中。

重新哈希法

  • 当冲突较多时,创建一个新的更大的哈希表,并使用一个新的哈希函数将所有元素映射到新表中。

基数哈希法

  • 使用多个哈希函数将关键字映射到多个位置,这可以提高哈希表的存储能力。

可扩展哈希法

  • 允许哈希表动态增长,当冲突较多时,可以增加桶的数量来减少冲突。

哈希函数的计算