使用位逻辑运算实现位向量,并实现大数据排序

来源:互联网 发布:java 1.6 32位下载 编辑:程序博客网 时间:2024/06/06 02:29

首先,先把这些数据实现位向量:

该例中数据类型为int,且为32位

 #define BITSPERWORD 32

#define SHIFT 5

#define MASK 0x1f

#define N 10000000

int a[1+N/BITSPERWOED];


把其对应位置0: 

void clr(int i)

{

a[i>>SHIFT] &= ~(1<<(i&MASK));

}


把其对应位置1: 

void set(int i)

{

a[i>>SHIFT] |= (1<<(i&MASK));

}

 查询对应位是否为1:

int test(i)

{

return(a[i>>SHIFT] &(1<<(i&MASK));

}


然后将其运用到大数据的排序中,现将数据置于位图中,然后遍历打印,如果有重复数据则需要再用一个数组进行标记,打印时候考虑重复

1,for(i=0,N)

if(!test(i))

           set(i)

2,for(t = 0, N)

if(test(t))

  printf();



具体实现代码可以参考其他人的代码http://blog.csdn.net/txgc0/article/details/8676068


0 0