m********g 发帖数: 9 | 1 在一本书上看到的
就是用bitmap来做sorting的经典题
实在不明白这个什么意思 a[i>>SHIFT] |= (1<<(i & MASK))
后面那个( 1<<(i&MASK) )是什么意思?
codes在下面
#include
#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)); }
int test(int i){ return a[i>>SHIFT] & (1<<(i & MASK)); } | w**x 发帖数: 362 | 2 Xiao qiang,
This means shift one to left by (i & MASK), or say 2^K , where K = i & MASK
and K < 32.
-wbgx |
|