散列学习笔记(二)——排解冲突
1. 多槽位(multiple slots)
(1)桶单元细分成若干槽位slot,存放(与同一单位)冲突的词条
一个长度为23的散列表,每一个桶都被分成了3个槽位,将24个词条插入其中。进行查找时,除了需要根据关键码确定对应的桶单元地址,还需在桶中遍历所有的槽位。
(2)
- 只要槽位数目不多,依然可以保证O(1)的时间效率。
- 槽位预留过多,空间浪费
- 无论预留多少,极端情况下仍有可能不够
2. 独立链(Linked-list chaining/separate chaining)
(1).每个桶存放一个指针。冲突的词条,组织成列表。
(2)
优点:
- 无需为每个桶预备多个槽位
- 任意多次的冲突都可解决
- 删除操作实现简单,统一
缺点:
- 指针需要额外空间
- 节点需要动态申请
- 空间未必连续分布,系统缓存几乎失效
3. 开放定址法(open addressing~closed hashing)
- 为每个桶都事先约定若干备用桶
- 散列表所占用的空间在物理上始终是地址连续的一块
- 它们构成一个查找链probing sequence试探队列/chain
4. 线性试探
- 在线性试探中,一旦发生冲突,转而试探当前位置的后继
- 存在大量本不该发生的冲突
- 试探位置间距太近
5. 懒惰删除
6. 平方试探
- 适当加大试探间距
- 以平方数为距离,确定下一试探桶单元
- 当表的长度为素数时,为了使平方试探总是成功,装填因子需要少于50%
优点:
- 数据聚集现象有所缓解
- 查找链上,各桶间距线性递增。一旦冲突,可逃离是非之地
缺点:若涉及外存,I/O将激增。有空桶也不一定能试探出来。
7. 双向平方试探
散列学习笔记(二)——排解冲突相关推荐
- 二次探测再散列举例_二次探测散列法
展开全部 二次再散e68a84e8a2ad3231313335323631343130323136353331333431366365列法是指第一次散列产生哈希地址冲突,为了解决冲突,采用另外的散列函 ...
- 吴恩达《机器学习》学习笔记二——单变量线性回归
吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...
- ASP.NET MVC 2 学习笔记二: 表单的灵活提交
ASP.NET MVC 2 学习笔记二: 表单的灵活提交 前面说到有做到公司内部的一个请假系统,用的是ASP.NET MVC 2+Entity Framework.虽然EF(Entity Frame ...
- amazeui学习笔记二(进阶开发4)--JavaScript规范Rules
amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...
- MATLAB学习笔记——二维和三维绘图
MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...
- 二维码学习笔记(二) | 数据分析与数据编码
唠唠闲话 二维码笔记系列(原文地址): 『二维码学习笔记(一) | 二维码概述』 『二维码学习笔记(二) | 数据分析与数据编码』 『二维码学习笔记(三) | 纠错编码』 『二维码学习笔记(四) | ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)
Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...
- 深度强化学习笔记(二)——Q-learning学习与二维寻路demo实现
深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 文章目录 深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 前言 理论 什么是Q-Learning 算 ...
- 学习笔记二.矩阵按键
#学习笔记二:GPIO的探索与矩阵按键 ##1.在配置cubemx时,对gpio的配置有开漏输出和推挽输出两种方式, ###这里有一篇文章(别人的文章)讲的很详细link戳这里跳转 通俗来讲,推挽输出 ...
最新文章
- golang 数组与切片
- c 初始化char**_CC++|指针详述及实例分析
- 测试掌握的Linux解压,轻松掌握Linux压缩/解压文件的方法
- 产品网络推广浅析网站在优化时文章标题撰写要注意哪些事项?
- 我眼中的Linux设备树(五 根节点)
- html中怎么显示错误信息,在html中显示为内嵌错误的文本
- 全志线刷工具如何刷linux,全志 Allwinner V3S 开发环境搭建 (二)安装必要工具
- 前端学习(1797):前端调试之css伪元素
- 【全栈React】第13天: 重复元素
- 阿里重启维护Dubbo了
- 风控上模型中的大小卡、主路旁路的应用
- 信息反馈-邮件(数据库是XML) (收集)
- SHELL编程基础之BASH入门
- MKS-DLC雕刻MKS_TFT_CNC字机器,CNC雕刻,激光雕刻GRBL使用方法
- springcloud Netflix
- php判断字符串长度 strlen()与mb_strlen()函数
- IDC机房网络系列视频
- 专业Java报表工具Stimulsoft Reports.Java常见问题解答
- idea中使用git创建分支与标签
- 北雄安 南佛山:区块链政务应用C位城市已出线 ——区块链市政应用四级梯队盘点...