认识哈希表和哈希表的实现

哈希函数的定义:

out f(in)

1)in -> ∞, out -> S

输入域是无穷的,输出域是有限的,也就是S域;

2)相同的输入一定会得到相同的输出;

3)不同的输入可能会有相同的输出,这也就是哈希碰撞;

4)*** 均匀性和离散型 ***

如果in1-inN通过哈希计算后,得到的out1-outN在S域上均匀分布,那么out对m取模后,得到的值也会在0-m-1域上均匀分布。

题1:

有40亿个正整数,我们要统计其中出现次数最多的数,限定内存为1G。

思考:

1. 如果使用hash表,key代表某个数,value代表这个数出现的次数进行统计,那么最坏的情况是每个数都只出现一次,内存占用会达到32G,超过1G的内存限制;

2. 我们先将这40亿个数进行哈希计算,并对100取模,那么所有的数会被分配到100个不同的桶中,且相同的数肯定会落到同一个桶中,我们只需要遍历每个桶,统计每个桶中出现次数最多的数。由于数据集被分成了100个桶,使用的内存为0.32G,可以实现该目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值