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. 双向平方试探

散列学习笔记(二)——排解冲突相关推荐

  1. 二次探测再散列举例_二次探测散列法

    展开全部 二次再散e68a84e8a2ad3231313335323631343130323136353331333431366365列法是指第一次散列产生哈希地址冲突,为了解决冲突,采用另外的散列函 ...

  2. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  3. ASP.NET MVC 2 学习笔记二: 表单的灵活提交

    ASP.NET MVC 2 学习笔记二:  表单的灵活提交 前面说到有做到公司内部的一个请假系统,用的是ASP.NET MVC 2+Entity Framework.虽然EF(Entity Frame ...

  4. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  5. MATLAB学习笔记——二维和三维绘图

    MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...

  6. 二维码学习笔记(二) | 数据分析与数据编码

    唠唠闲话 二维码笔记系列(原文地址): 『二维码学习笔记(一) | 二维码概述』 『二维码学习笔记(二) | 数据分析与数据编码』 『二维码学习笔记(三) | 纠错编码』 『二维码学习笔记(四) | ...

  7. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)

    Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...

  8. 深度强化学习笔记(二)——Q-learning学习与二维寻路demo实现

    深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 文章目录 深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 前言 理论 什么是Q-Learning 算 ...

  9. 学习笔记二.矩阵按键

    #学习笔记二:GPIO的探索与矩阵按键 ##1.在配置cubemx时,对gpio的配置有开漏输出和推挽输出两种方式, ###这里有一篇文章(别人的文章)讲的很详细link戳这里跳转 通俗来讲,推挽输出 ...

最新文章

  1. golang 数组与切片
  2. c 初始化char**_CC++|指针详述及实例分析
  3. 测试掌握的Linux解压,轻松掌握Linux压缩/解压文件的方法
  4. 产品网络推广浅析网站在优化时文章标题撰写要注意哪些事项?
  5. 我眼中的Linux设备树(五 根节点)
  6. html中怎么显示错误信息,在html中显示为内嵌错误的文本
  7. 全志线刷工具如何刷linux,全志 Allwinner V3S 开发环境搭建 (二)安装必要工具
  8. 前端学习(1797):前端调试之css伪元素
  9. 【全栈React】第13天: 重复元素
  10. 阿里重启维护Dubbo了
  11. 风控上模型中的大小卡、主路旁路的应用
  12. 信息反馈-邮件(数据库是XML) (收集)
  13. SHELL编程基础之BASH入门
  14. MKS-DLC雕刻MKS_TFT_CNC字机器,CNC雕刻,激光雕刻GRBL使用方法
  15. springcloud Netflix
  16. php判断字符串长度 strlen()与mb_strlen()函数
  17. IDC机房网络系列视频
  18. 专业Java报表工具Stimulsoft Reports.Java常见问题解答
  19. idea中使用git创建分支与标签
  20. 北雄安 南佛山:区块链政务应用C位城市已出线 ——区块链市政应用四级梯队盘点...

热门文章

  1. 整顿一年再次增资近50%,为什么蚂蚁集团要重启IPO?
  2. 弹性容器----六大属性(5、项目在交叉轴上的对齐方式)
  3. 弹性盒之主轴与交叉轴的区分
  4. Matlab watershed函数
  5. 程序猿的2019年终总结
  6. 【算法】几分钟时间让你彻底学会—时间复杂度
  7. Eclipse 10 hotest-keys
  8. 微信公众号文章增加评论功能
  9. OJB中的多表查询和更新
  10. 文字图片滚动代码-无缝滚动,强!!!