二次散列学习

1.介绍

二次散列(Double Hashing)是一种解决哈希冲突(hash collision)的方法是的,它正是在发生哈希冲突时用到的 ,而且是一种非常经典、效果很好的开放定址法(Open Addressing)

二次散列 = 用两个不同的哈希函数

当第一次哈希定位的位置发生冲突时,用第二个哈希函数来决定"下一次探测的步长"。

复制代码
// 第 i 次探测位置是,i从0开始计数:
index_i = (h1(key) + i * h2(key)) % N

2.常见的哈希冲突解决方案

二次散列能有效避免 Primary Clustering(主聚集)

若忘记了设置key,导致key都是0,开启二次散列会有助于减少冲突吗?

不会,本质上没有任何帮助,甚至可能更糟。不同 key → 不同的 h2(key) → 不同的探测路径。

相关推荐
cui_ruicheng2 分钟前
C++数据结构进阶:哈希表实现
数据结构·c++·算法·哈希算法·散列表
li星野13 分钟前
[特殊字符] 模拟试卷一:C++核心与系统基础(90分钟)答案版
开发语言·c++·算法
二进制星轨27 分钟前
leecode-283-移动零-算法题解
算法
小陈phd32 分钟前
多模态大模型学习笔记(二十一)—— 基于 Scaling Law方法 的大模型训练算力估算与 GPU 资源配置
笔记·深度学习·学习·自然语言处理·transformer
老鼠只爱大米34 分钟前
LeetCode经典算法面试题 #215:数组中的第K个最大元素(快速选择、堆排序、计数排序等多种实现方案详解)
算法·leetcode·堆排序·快速选择·topk·数组中的第k个最大元素
丝斯201135 分钟前
AI学习笔记整理(75)——Python学习4
人工智能·笔记·学习
2301_8166512241 分钟前
C++中的享元模式变体
开发语言·c++·算法
逆境不可逃43 分钟前
LeetCode 热题 100 之 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
m0_5832031344 分钟前
C++中的访问者模式变体
开发语言·c++·算法
小帅学编程1 小时前
英语学习笔记
java·笔记·学习