散列学习笔记(二)——排解冲突
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戳这里跳转 通俗来讲,推挽输出 ...
最新文章
- 刷新系统托盘(清除死掉的图标)修正版
- 7、MySQL数据类型的选择
- Reactor中的Thread和Scheduler
- 【POJ3415】 Common Substrings (SA+单调栈)
- 【后台任务】在线程池线程上运行代码(6)
- android 那个桌面好,手机桌面软件哪个好?最好用的手机桌面软件推荐
- MySQL分库分表及中间件Mycat
- win10系统迁移到新的硬盘
- 你想要的宏基因组-微生物组知识全在这(1910)
- MYSQL数据库开发之路-----数据查询一
- docker容器和镜像的区别
- 【转】在网页中嵌入QQ 阿里旺旺 淘宝代码及详解
- 企业微信支付功能怎么开通?
- 华为手机支持鸿蒙,2021年华为智能手机全面升级支持鸿蒙2.0
- 高德地图 地理编码报result参数报 USERKEY_PLAT_NOMATCH INVALID_USER_SCODE
- 诺贝尔物理学奖揭晓:LED灯将点亮整个21世纪
- RAID技术规范简介 RAID0 RAID1 RAID2 RAID3 RAID4 RAID5 RAID6 RAID7
- R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果横向构成新的结果可视化组合图(使用|符号)
- img文件制作linux启动u盘,如何在Linux系统中制作可启动img/iso镜像文件
- 如何批量制作结业证书
热门文章
- 汽车保养知识知多少?这篇文章让你秒懂
- 图像分割经典算法--《分水岭算法》(Watershed)
- python怎样用函数求水仙花数_python求解水仙花数的方法
- 使用arduino平台调试STM32F103C8T6最小系统板3组串口全开
- 华为微博回应鸿蒙,果不其然,华为放出终极大招!鸿蒙操作系统下月正式推送。就在刚刚,华为开通了鸿蒙操作系统的官方微博,关注人数已接近八万。 ... - 雪球...
- android版netspot,WiFi概观360 Pro直装解锁专业版
- MAC OSX打开文件提示cannot be opened because the developer cannot be verified问题的解决办法
- 8090该如何创业呢?
- 使用Postfix和Dovecot部署邮件系统
- Java递归实现多级菜单