【数据结构笔记41】散列表/哈希表的性能分享
本次笔记内容:
11.4 散列表的性能分析
文章目录
- 平均查找长度
- 影响冲突产生的三个因素
- 不同方法的性能
- 线性探测法查找性能
- 平方探测法和双散列探测法的查找性能
- 期望探测次数与装填因子α的关系
- 分离链接法的查找性能
- 总结
平均查找长度
平均查找长度(ASL)用来度量散列表查找效率:成功、不成功两种指标。
关键词的比较次数,取决于产生冲突的多少。
影响冲突产生的三个因素
(1)散列函数是否均匀;
(2)处理冲突的方法;
(3)散列表的装填因子α。
不同方法的性能
线性探测法查找性能
线性探测查找性能期望公式如上。
平方探测法和双散列探测法的查找性能
平方探测法和双散列探测法的查找性能性能如上。
期望探测次数与装填因子α的关系
如上图,合理的最大装载因子α应该不超过0.85。
分离链接法的查找性能
如上图,分离链接法的装载因子有可能超过1。
总结
如上图,散列法与关键字空间大小n无关,适于关键字直接比较的计算量大的问题;但散列法是一个以空间换时间的方法,并且不适于范围查找。
开发地址法:
- 是一个数组,存储效率高,随机查找;
- 但是有“聚集”现象。
分离链接法:
- 组合运用顺序存储和链式存储,链表部分的存储效率和查找效率都比较低;
- 关键字删除不需要“懒惰删除法”;
- 装载因子大时,效率可能会较低。
【数据结构笔记41】散列表/哈希表的性能分享相关推荐
- 算法设计与分析——散列表/哈希表(Hash Table):直接寻址表
分类目录:<算法设计与分析>总目录 相关文章: ·散列表/哈希表(Hash Table)(一):基础知识 ·散列表/哈希表(Hash Table)(二):直接寻址表 ·散列表/哈希表(Ha ...
- 散列表(哈希表)(散列函数构造、处理冲突、查找)
本文转载自: [1]https://blog.csdn.net/qq_22238021/article/details/78258605 [2]https://blog.csdn.net/duan19 ...
- 《恋上数据结构第1季》哈希表介绍以及从源码分析哈希值计算
哈希表(Hash Table) 引出哈希表 哈希表(Hash Table) 哈希冲突(Hash Collision) JDK1.8的哈希冲突解决方案 哈希函数 如何生成 key 的哈希值 Intege ...
- 【数据结构与算法篇】 哈希表原理、底层实现剖析
一个在校大二学生,在CSDN记录自我成长!!!最近在自学数据结构和算法时,学到了哈希表,有很多地方都不明白.如何使用哈希表?原理是什么?如何工作的?我们如何设计哈希表?等等,所以就在网络上查了相关博客 ...
- 【JS数据结构与算法】认识哈希表
目录 一.什么是哈希表? 二.哈希表的优势. 三.哈希表与数组相比较. 四.数据的存储. 方法一:ASCII编码之和 方法二:幂的连乘 五.方法二改进--哈希化 六.解决冲突 一:链地址法(拉链法). ...
- 数据结构与算法五:哈希表-哈希函数设计原则-哈希冲突解决方案
一.哈希表的定义: 二.哈希表举例: 哈希函数就是映射关系 三.哈希表应用举例: Leetcode上第387题: 思路:通过s.charAt(i)-'a'将字符串中的字符映射成hash表,出现一次,在 ...
- 高速缓存的数据结构:拉链散列表
高速缓存的底层数据结构:拉链散列表,很多bucket,挂了很多cache entry(tag + cache line + flag). cache line就是缓存的数据,包含多个变量的值 tag指 ...
- 数据结构与算法——深入理解哈希表
文章目录 哈希表 优点与缺点 哈希化 冲突 基于线性探测的开放地址法 插入 查找 删除 性能问题 基于二次探测的开放地址法 基于再哈希法的开放地址法 链地址法 哈希表实现方法的选择 参考 哈希表 哈希 ...
- 左程云算法笔记(四)哈希表和有序表的使用、链表
左程云算法笔记(四) 哈希表的使用 有序表的使用 链表 单链表反转 (LC206) 双向链表反转 打印两个有序链表的公共部分 合并两个有序链表(LC21) 判断一个链表是否为回文结构 (LC234) ...
最新文章
- C++ 函数的模板的使用
- 关于未能映射路径问题
- [Leetcode][第63题][JAVA][不同路径2][动态规划][压缩路径]
- 【迁移2018-05-08 14:14:27】全局唯一ID生成
- INTERSPEECH2020大会收录了哪些论文?
- 新建站点的mysql数据库_lAMP下新建维护站点全过程
- 案例:规则引擎Drools解决汽水问题
- MyBatis框架使用trim标签修改字段,查询字段
- CCF NOI1048 检测矩阵
- Linux 引导流程解析
- C语言课程设计--推箱子
- 使用Bitmap font generator工具生成fnt文件
- Appium 基础教程
- 语音识别开源项目汇总
- 免费苹果账号(apple id)申请ios证书p12真机调试
- Java验证图片格式
- 安装虚拟机提示未启动服务器,Hyper-V虚拟机未启动,并触发0x80070057错误
- 中央财经大学c语言试题答案,中央财经大学C语言题
- 传奇脚本显示服务器开区时间代码,GOM引擎该地图只限新区开放方法,传奇开区时设置老区不能进脚本...
- 向您推荐一个免费的装修门户网站
热门文章
- 【解决方案 二】---设置mysql5.7编码集为utf8mb4
- 关于Windows 1803版本内核隔离打开后无法关闭的解决方案
- Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法
- element ui 弹出组件的遮罩层在弹出层的上面的解决方法
- Mac系统终端命令行不执行命令 总出现command not found解决方法
- [Git]解决Permission denied, please try again问题
- 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置)
- charles抓包显示乱码解决方法
- 在Java中编码为Base64
- Markdown:继续编号列表