《位图 - Bitmap》

来源:互联网 发布:c语言long double输出 编辑:程序博客网 时间:2024/06/04 08:25

数据的快速查找、判重和删除。

 

用12M的内存可以表示8位数的电话号码:

9999999 = 99M bit = 12M Bytes

 

==============================================================================

==============================================================================

 

#define BITSPERWORD 32

#define SHIFT 5

#define MASK 0x1F

#define N 10000000

int a[1 + N/BITSPERWORD];

void set (int i){a[i>>SHIFT] |=(1<<(i&MASK));}

void clr (int i){a[i>>SHIFT] &=(1<<(i&MASK));}

void test (int i){return a[i>>SHIFT]& (1<<(i&MASK));}

 

==============================================================================

==============================================================================

设计数据结构,可以快速返回0-10亿中哪些数出现了。

 

==============================================================================

==============================================================================

 

 

0 0
原创粉丝点击