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

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

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

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

哈希表

哈希表的思想

性能分析

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

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

经典哈希函数

除了除法法以外还有:

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

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

冲突怎么解决?

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值