2-bitmap实现海量数据查找不重复数据

来源:互联网 发布:欧洲文献检索数据库 编辑:程序博客网 时间:2024/05/22 07:41
#include<iostream>#include<cstring>using namespace std;#define MAX 100000unsigned array[MAX];void init(){memset(array, 0, MAX * sizeof(unsigned));}void set(unsigned i){array[i >> 5] |= 0x01 << (i & 31);}bool test(unsigned i){return array[i >> 5] & (0x01 << (i & 31));}void clear(unsigned i){array[i >> 5] &= ~(0x01 << (i & 31));}int test_bit(unsigned i){unsigned e = i << 1;if(!test(e) && !test(e + 1))  return 0;else if(test(e) && !test(e + 1))  return 1;else if(!test(e) && test(e + 1))  return 2;else  return 3;}void set_bit(unsigned i){unsigned e = i << 1;if(test_bit(i) == 0)  set(e);else if(test_bit(i) == 1){set(e + 1);clear(e);}}void clear_bit(unsigned i){unsigned e = i << 1;clear(e);clear(e + 1);}int main(){init();int a[] = {4, 1, 1, 38, 999, 43, 999, 3, 48, 48};int i;for(i = 0; i < 10; i++)  set_bit(a[i]);for(i = 0; i < 1000; i++){if(test_bit(i) == 1)  cout << i << endl;}return 0;}


0 0
原创粉丝点击