漫画算法-小灰的算法之旅-算法的实际应用(六)

本文内容基于《漫画算法 小灰的算法之旅》,魏梦舒著。


1. Bitmap的巧用

1.1 查询

1.2 去重

1.3 Bitmap的代码实现

2. LRU算法的应用

2.1 实例问题

2.2 代码实现

3. A星寻路算法

4. 红包算法

4.1 二倍均值法

4.2 线段切割法


1. Bitmap的巧用

Bitmap算法,又叫做位图算法,这里所说的位图并不是像素图片的位图,而是内存中连续的二进制位所组成的数据结构,该算法主要用于对大量整数做去重和查询操作。

1.1 查询

举个例子,假设给出一块长度为10bit的内存空间,也就是Bitmap,想要依次插入证书4、1、2、3,需要怎么做?

  • 第1步:给出一块长度为10的Bitmap,其中的每一个bit位分别对应着从0到9的整型数。此时,Bitmap的所有位都是0;
  • 第2步:把整型数4存入Bitmap,对应存储的位置就是下标为4的位置,将此bit设置为1;
  • 第3步:类似第2步;
  • 第4步:类似第2步;
  • 第5步:类似第2步。

如果问此时Bitmap里存储了哪些元素,显然是4、3、2、1,一目了然。

1.2 去重

例如用Bitmap的形式存储用户标签,以标签为中心,一个标签对应多个用户,例如用户信息:

ID Name Sex Age Occupation Phone
1 小灰 90后 程序员 苹果
2 大黄 90后 程序员 三星
3 小白 00后 学生 小米

 

让每一个标签存储包含此标签的所有用户ID,每一个标签都是一个独立的Bitmap:

Sex Bitmap
1, 2
3
Age Bitmap
90后 1, 2
00后 3
Occupation Bitmap
程序员 1, 2
学生 3
Phone Bitmap
苹果
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值