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

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

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

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

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

哈希表

哈希表的思想

性能分析

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

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

经典哈希函数

除了除法法以外还有:

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

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

冲突怎么解决?

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

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


http://www.kler.cn/a/297493.html

相关文章:

  • LaTeX中算法环境横线/宽度调整(Algorithm)
  • 收银系统源码-收银台(exe、apk安装包)自由灵活操作简单!
  • 【阿雄不会写代码】全国职业院校技能大赛GZ036第五套
  • HTTP1.0 到 HTTP3.0 的优化
  • 【网络安全 | 渗透工具】IIS 短文件名枚举工具—shortscan安装使用教程
  • @Transactional 参数详解
  • Charles - 夜神模拟器证书安装App抓包-charles监控手机出现unknown 已解决
  • 子网ip和ip地址一样吗?子网ip地址怎么算
  • Google AI 概述——喜欢的三点和不喜欢的两点
  • 使用Python海龟绘图画出奥运五环图
  • Android消息类型及事件分发流程
  • 99.WEB渗透测试-信息收集-网络空间搜索引擎shodan(1)
  • 神经网络的线性部分和非线性部分
  • 漫谈设计模式 [2]:工厂方法模式
  • 动手学深度学习(pytorch)学习记录26-卷积神经网路(LeNet)[学习记录]
  • 基于云函数的自习室预约微信小程序+LW示例参考
  • 560.和为k的子数组
  • LeetCode之图
  • Flutter MacOS 去掉窗口导航栏
  • Vue学习:计算属性Computed