您的位置:首页 > 大数据

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

2017-02-07 22:28 399 查看
首先,先把这些数据实现位向量:

该例中数据类型为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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐