本次笔记内容:
11.4 散列表的性能分析

文章目录

  • 平均查找长度
  • 影响冲突产生的三个因素
  • 不同方法的性能
    • 线性探测法查找性能
    • 平方探测法和双散列探测法的查找性能
    • 期望探测次数与装填因子α的关系
    • 分离链接法的查找性能
  • 总结

平均查找长度

平均查找长度(ASL)用来度量散列表查找效率:成功、不成功两种指标。

关键词的比较次数,取决于产生冲突的多少。

影响冲突产生的三个因素

(1)散列函数是否均匀;
(2)处理冲突的方法;
(3)散列表的装填因子α。

不同方法的性能

线性探测法查找性能

线性探测查找性能期望公式如上。

平方探测法和双散列探测法的查找性能

平方探测法和双散列探测法的查找性能性能如上。

期望探测次数与装填因子α的关系

如上图,合理的最大装载因子α应该不超过0.85。

分离链接法的查找性能

如上图,分离链接法的装载因子有可能超过1。

总结

如上图,散列法与关键字空间大小n无关,适于关键字直接比较的计算量大的问题;但散列法是一个以空间换时间的方法,并且不适于范围查找。

开发地址法:

  • 是一个数组,存储效率高,随机查找;
  • 但是有“聚集”现象。

分离链接法:

  • 组合运用顺序存储和链式存储,链表部分的存储效率和查找效率都比较低;
  • 关键字删除不需要“懒惰删除法”;
  • 装载因子大时,效率可能会较低。

【数据结构笔记41】散列表/哈希表的性能分享相关推荐

  1. 算法设计与分析——散列表/哈希表(Hash Table):直接寻址表

    分类目录:<算法设计与分析>总目录 相关文章: ·散列表/哈希表(Hash Table)(一):基础知识 ·散列表/哈希表(Hash Table)(二):直接寻址表 ·散列表/哈希表(Ha ...

  2. 散列表(哈希表)(散列函数构造、处理冲突、查找)

    本文转载自: [1]https://blog.csdn.net/qq_22238021/article/details/78258605 [2]https://blog.csdn.net/duan19 ...

  3. 《恋上数据结构第1季》哈希表介绍以及从源码分析哈希值计算

    哈希表(Hash Table) 引出哈希表 哈希表(Hash Table) 哈希冲突(Hash Collision) JDK1.8的哈希冲突解决方案 哈希函数 如何生成 key 的哈希值 Intege ...

  4. 【数据结构与算法篇】 哈希表原理、底层实现剖析

    一个在校大二学生,在CSDN记录自我成长!!!最近在自学数据结构和算法时,学到了哈希表,有很多地方都不明白.如何使用哈希表?原理是什么?如何工作的?我们如何设计哈希表?等等,所以就在网络上查了相关博客 ...

  5. 【JS数据结构与算法】认识哈希表

    目录 一.什么是哈希表? 二.哈希表的优势. 三.哈希表与数组相比较. 四.数据的存储. 方法一:ASCII编码之和 方法二:幂的连乘 五.方法二改进--哈希化 六.解决冲突 一:链地址法(拉链法). ...

  6. 数据结构与算法五:哈希表-哈希函数设计原则-哈希冲突解决方案

    一.哈希表的定义: 二.哈希表举例: 哈希函数就是映射关系 三.哈希表应用举例: Leetcode上第387题: 思路:通过s.charAt(i)-'a'将字符串中的字符映射成hash表,出现一次,在 ...

  7. 高速缓存的数据结构:拉链散列表

    高速缓存的底层数据结构:拉链散列表,很多bucket,挂了很多cache entry(tag + cache line + flag). cache line就是缓存的数据,包含多个变量的值 tag指 ...

  8. 数据结构与算法——深入理解哈希表

    文章目录 哈希表 优点与缺点 哈希化 冲突 基于线性探测的开放地址法 插入 查找 删除 性能问题 基于二次探测的开放地址法 基于再哈希法的开放地址法 链地址法 哈希表实现方法的选择 参考 哈希表 哈希 ...

  9. 左程云算法笔记(四)哈希表和有序表的使用、链表

    左程云算法笔记(四) 哈希表的使用 有序表的使用 链表 单链表反转 (LC206) 双向链表反转 打印两个有序链表的公共部分 合并两个有序链表(LC21) 判断一个链表是否为回文结构 (LC234) ...

最新文章

  1. C++ 函数的模板的使用
  2. 关于未能映射路径问题
  3. [Leetcode][第63题][JAVA][不同路径2][动态规划][压缩路径]
  4. 【迁移2018-05-08 14:14:27】全局唯一ID生成
  5. INTERSPEECH2020大会收录了哪些论文?
  6. 新建站点的mysql数据库_lAMP下新建维护站点全过程
  7. 案例:规则引擎Drools解决汽水问题
  8. MyBatis框架使用trim标签修改字段,查询字段
  9. CCF NOI1048 检测矩阵
  10. Linux 引导流程解析
  11. C语言课程设计--推箱子
  12. 使用Bitmap font generator工具生成fnt文件
  13. Appium 基础教程
  14. 语音识别开源项目汇总
  15. 免费苹果账号(apple id)申请ios证书p12真机调试
  16. Java验证图片格式
  17. 安装虚拟机提示未启动服务器,Hyper-V虚拟机未启动,并触发0x80070057错误
  18. 中央财经大学c语言试题答案,中央财经大学C语言题
  19. 传奇脚本显示服务器开区时间代码,GOM引擎该地图只限新区开放方法,传奇开区时设置老区不能进脚本...
  20. 向您推荐一个免费的装修门户网站

热门文章

  1. 【解决方案 二】---设置mysql5.7编码集为utf8mb4
  2. 关于Windows 1803版本内核隔离打开后无法关闭的解决方案
  3. Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法
  4. element ui 弹出组件的遮罩层在弹出层的上面的解决方法
  5. Mac系统终端命令行不执行命令 总出现command not found解决方法
  6. [Git]解决Permission denied, please try again问题
  7. 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置)
  8. charles抓包显示乱码解决方法
  9. 在Java中编码为Base64
  10. Markdown:继续编号列表