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

本文介绍了Bitmap算法在查询和去重方面的应用,详细解释了如何利用位图进行高效的数据存储和处理。同时,文章还探讨了LRU算法在内存管理中的作用,通过实例展示了如何使用哈希链表解决内存溢出问题。此外,还提到了A星寻路算法和红包分配的两种策略:二倍均值法和线段切割法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


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
学生
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值