当前位置: 首页 > news >正文

高级算法设计与分析 学习笔记3 哈希表

首先我们要讨论一个把n个数据放到列表S里面的问题:

但很显然,这些数据的范围有多大这个T就得有多大,而实际上要放的数字可能就几个(比如就放一个1和一个10000000,那我还是要准备一个巨大的T),不好。

为了解决这个问题,哈希表登场了。

哈希表

哈希表的思想

性能分析

n/m就是“装载率”,一个位置平均有几个数字

要找到底,加上一开始调用hash函数的时间。

经典哈希函数

除了除法法以外还有:

这招叫乘法法,m代表有几个位置。

就是说,先让A乘以K,让其后面几位发生变化,然后在用老方法取余。为什么要多此一举?其实就是要让A变大,然后用简单的移位法取余,这样就不用做除法运算了,效率更好。

冲突怎么解决?

位置被占了,那就往下(+i)放。这就叫线性法

更复杂一点的方法,但是性能更好一点。记得这两种方法都要mod m,不要爆了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • maven-helper插件解决jar包冲突实战
  • 使用udp进行通信
  • 宏碁扩展Swift系列,推出四款全新AI笔记本电脑
  • 番外 1 : 安装 docker 和 docker-compose
  • Oracl查询报错:ORA-29275: 部分多字节字符
  • vscode spring boot项目编辑yaml不自动提示补全如何解决
  • 计算机网络13——IM聊天系统——网络功能实现——UDP
  • Oracle高级压缩和透明数据加密组合实验
  • CSS学习6
  • CSS中 特殊类型的选择器 伪元素如何使用
  • python文件自动化(4)
  • XMind v24 激活,简单一键激活
  • Spring、SpringMVC、SpringBoot都是什么,有什么区别
  • TinyWebSever源码逐行注释()_简单代码的整合
  • 将 x 减到 0 的最小操作数
  • 【知识碎片】第三方登录弹窗效果
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • github从入门到放弃(1)
  • idea + plantuml 画流程图
  • isset在php5.6-和php7.0+的一些差异
  • JavaScript的使用你知道几种?(上)
  • Laravel Mix运行时关于es2015报错解决方案
  • MaxCompute访问TableStore(OTS) 数据
  • Mysql优化
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 对象管理器(defineProperty)学习笔记
  • 服务器从安装到部署全过程(二)
  • 给第三方使用接口的 URL 签名实现
  • 规范化安全开发 KOA 手脚架
  • 码农张的Bug人生 - 初来乍到
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 我感觉这是史上最牛的防sql注入方法类
  • 一份游戏开发学习路线
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 函数计算新功能-----支持C#函数
  • ​iOS安全加固方法及实现
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​香农与信息论三大定律
  • # 飞书APP集成平台-数字化落地
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (21)起落架/可伸缩相机支架
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (备忘)Java Map 遍历
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (动态规划)5. 最长回文子串 java解决
  • (回溯) LeetCode 78. 子集
  • (三) diretfbrc详解
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十八)三元表达式和列表解析
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)opengl函数加载和错误处理
  • (一)认识微服务
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包