哈希表原理与c++例题

特点:
1、均匀性,离散性
2、每个输入对应唯一输出
3、每个输出对应的输入不唯一,即不同输入可能对应同一输出。

例子:
问题:Random pool .
插入,删除,随机取数 操作,均未O(1)
实现方法,建立两个相反的哈希表,即倒排索引的概念,删除时,用最后一项替换删除项,以保持哈希值的连续性。

位图
位图通过其他的数据类型实现,通过其他数组来拼成,对于仅需要两种状态的数组,可以极大的省空间。
如:
int[] arr =new int[10]; // 32bit * 10 =320 bits

int i =178;

//确定第几个int,以及int 的第几位
int numIndex=i/32;
int bitIndex=i%32;

//把对应bit上的状态0或1,变成了数值0和数值1,即取得了178位的状态。即将对应位移到第一位后与1相与。
int s=((arr(numIndex)>>(bitIndex))&1);

//将178位状态改为1,即将对应位于1相或
arr(numIndex)=arr(numIndex) |(1<<(bitIndex)) ;

布隆过滤器
大数据,大样本集,对一个集合中的项目做查询。正常方法,建立哈希表,对于内存空间的需求量很大。
布隆过滤器存在失误率。仅存在一种失误,宁可错杀三千,不可放过一个,绝不会放过一个坏人,但是可能冤枉好人,但是黑名单中的绝对不会通过。
实现:
一个样本用k个哈希函数,对应到k个位置。作为黑名单,对于任意一出现过的样本,其对应的K个位置必然全是占用的,若有一个未占用,则说明是新样本。布隆过滤器仅有添加操作,额米有删除操作。
哈希表长度M,哈希函数数目K.参数确定决定性能。
图片: https://uploader.shimo.im/f/eg4BoTmv5E4qmfEI.png
在这里插入图片描述

理论长度m(向上取整).对应实际空间占用m/8,实际值m’大于m.
图片: https://uploader.shimo.im/f/rQdQv7PI8LUJZdQr.png
k向上取整,m使用理 论值,得到实际k’。
在这里插入图片描述
真实失误率:
图片: https://uploader.shimo.im/f/QMp7RzBaJyYStrTD.png
在这里插入图片描述

一致性哈希

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值