数据的快速查找、判重和删除。
用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亿中哪些数出现了。
==============================================================================
==============================================================================