高级数据结构及应用 —— 使用 bitmap 进行字符串去重

位图应当具备的置一,清零,以及判断三大功能:

#define BITS_PER_WORD 32
#define MASK 0x1f
#define SHIFT 5// BITS_PER_WORD 与 MASK、SHIFT 是相匹配的,// 如果 BITS_PER_WORD 为 8,则 SHIFT 为 3,MASK 为 0x07// 如果 BITS_PER_WORD 为 64,则 SHIFT 为 6,MASK 为 0x3f// 同样的存储位图的数组的元素类型也要发生相应的改变,BITS_PER_WORD == 8,char// BITS_PER_WORD == 64, ⇒ long long
#define N 10000000
int a[1+N/BITS_PER_WORD];void set(int i) {a[i >> SHIFT] != (1 << (i & MASK));
}// a[i >> SHIFT] ⇒ 返回的是int整型,也是长度为 32 的 bit 比特串;
void clr(int i) {a[i >> SHIFT] &= ~(1 << (i & MASK));
}int test(int i) {return a[i >> SHIFT] & (1 << (i & MASK));
}

1. 排序以及去重

int main(void) {int i;for (i = 0; i < N; ++i)clr(i);while (scanf("%d", &i) != EOF) set(i);for (i = 0; i < N; ++i) {          // 自然是有序,且不重复的if (test(i)) {printf("%d ", i);   }}printf("\n");
}

2. 问题与思考

  • 序列中出现负数怎么办;

位图(bitmap)—— C语言实现相关推荐

  1. Redis 04_位图bitmap

    位图bitmap    [字节数组] 位图不是真正的数据类型,它是定义在字符串类型中 一个字符串类型的值最多能存储512M字节的内容 位上限:2^(9+10+10+3)=2^32b  --命令 设置某 ...

  2. 位图BITMAP结构

    数字媒体对于图像的处理肯定离不开对于位图的有关处理,首先要弄清楚位图的结构才能进行下面的工作.位图(Bitmap)图像又称点阵图或光栅图,它使用我们称为像素(象素,Pixel)的一格一格的小点来描述图 ...

  3. 算法与数据结构——位图BitMap

    一.介绍 1.1 什么是位图 在Java中有四种整数类型:byte.short.int.long. 1 byte(字节) = 8 bit(位) 1 int = 4 byte = 32 bit 所以我们 ...

  4. 位图Bitmap(基于Java实现)

    所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况.通常是用来判断某个数据存不存在的. 设计原则: 尽可能的最大化利用内存,极限挖掘.利用.发挥Java的性能. ...

  5. 十二、【数据结构】位图(bitmap)的详解与实现

    一.定义     --概念部分参考http://www.iteblog.com/archives/148 位图法就是bitmap的缩写.所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据, ...

  6. 15. C语言实现位图 bitmap

    1. 位图是什么? 位图是一种资源管理的方式,按位bit与资源一对一的对应关系. 位图中的每一位将于内存中的每一页一一对应. 一个位有 2 种状态,即 0 和 1 ,用位图中的每一个位来表示实际物理内 ...

  7. 数据结构--位图 BitMap

    文章目录 1. 位图 2. 位图代码 3. 布隆过滤器 Bloom Filter 4. 总结 1. 位图 我们有1千万个整数,整数的范围在1到1亿之间.如何快速查找某个整数是否在这1千万个整数中呢? ...

  8. opengl绘制位图字体c语言源代码,使用OpenGL位图字体将文本放到屏幕上

    我正在学习OpenGL NeHe制作.当我来阅读第13课位图字体时,我遇到了一个问题.我使用glut编写我的代码.而我的PC系统是Windows7.I在Microsoft Visual Studio ...

  9. 【ARM 嵌入式 C 入门及渐进 4-- Linux 位图 bitmap】

    文章目录 1.1 位图算法-bitmap 1.1.1 bitmap 使用场景示例 1.1.2 bitmap算法实现 1.1 位图算法-bitmap 位图算法,是指使用一个 bit 位来表示数据状态. ...

  10. oracle索引介绍之位图(bitmap)索引

    位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引. 1. 案例 有张表名为ta ...

最新文章

  1. CV01-语义分割笔记和两个模型VGG ResNet的笔记
  2. oracle中同义词的用法,Oracle中使用同义词介绍
  3. Python核心编程学习日记之错误处理
  4. 数组作为形参时的一个陷阱
  5. 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))
  6. 系统设计4:Web服务和流量限制
  7. ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点、线、折线、面、圆、矩形的代码
  8. 34个计算机网络易错知识点总结
  9. JavaWeb——MyBatis入门程序
  10. 华为笔记本没有网线口_3599元起,华为台式机MateStation B515上架:R5 4600G
  11. Nacos教程_1 简介和安装
  12. MySql:Unknown collation: ‘utf8mb4_0900_ai_ci‘
  13. 用PS制作电子签名方法总结
  14. T470 Win10下触摸板手势
  15. 2017深度学习装机清单 (附京东链接)
  16. 2015年计算机二级office,2015年计算机二级MSoffice考试资料汇总.doc
  17. 安霸(ambarella) s2lm视频处理流程
  18. GPS定位中的误差源及解决方法
  19. vue 环信im 发送图片、接收图片
  20. 辽宁中职升高职计算机考试,2021年_辽宁省_中职升高职高考真题

热门文章

  1. golang之正则校验(验证某字符串是否符合正则表达式)
  2. 1.ElementUI中table的sortable使用
  3. java 判断是否base64_判断一个字符串是否进行了base64加密
  4. 【自我救赎--牛客网Top101 4天刷题计划】 第四天 登峰造极
  5. 【java学习之路】(java框架)008.JdbcTemplate
  6. java 显示锁_Java 实现一个自己的显式锁Lock(有超时功能)
  7. Mysql配置项sync_binlog=0
  8. java8 方法引用详解_Java8中如何通过方法引用获取属性名详解
  9. 宾夕法尼亚在线计算机硕士,申请访谈:宾夕法尼亚大学(Upenn)计算机科学(CS)的录取攻略...
  10. 问题记录:既然MAC能唯一标识一台设备,那为什么我们还需要IP呢?