大数据-2.5亿个数据-统计不重复

2.5亿个数据,统计不重复的数据。

bitmap

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <fstream>
#include <conio.h>
#include <ctime>
#define MAXN 20000000

#define setone(a,i) (a|0x0001<<2*i)
#define settwo(a,i) (a|0x0003<<2*i)

using namespace std;

char *path = "d:/test/tmpcolin.dat"; 
int tarray[MAXN]={0};
//int comp[100];
int view(int a,int i)
{
	return a>>(2*i) & 0x0003;
}
// 生成一定数据
void generatedata()
{
	fstream file(path,ios::in|ios::out|ios::binary);
	srand((unsigned)time(NULL));
	for(int i=0; i<20; ++i)
	{
		int x = (double)rand()/RAND_MAX * 100;
		file.write((char*)&x,sizeof(int));
		comp[i] = x;
	}
	file.close();
} 
// 模拟处理
void processint(int i)
{
	int j = i / 16;
	i = i % 16;
	if(view(tarray[j],i)==0)
		tarray[j] = setone(tarray[j],i);
	else if(view(tarray[j],i)==1)
		tarray[j] = settwo(tarray[j],i);
}
void initialarray()
{
	int x;
	fstream file(path,ios::in|ios::out|ios::binary);
	while(file.read((char*)&x,sizeof(int))){
		processint(x);
		//cout<<x<<" ";
	}
	//cout<<endl;
	file.close();
	
}
int main()
{	
	generatedata();
	initialarray();
	//sort(comp,comp+20);
	//for(int i=0;i<20;++i)
	//	cout<<comp[i]<<" ";
	//cout<<endl;
	bool ma = 1;
	for(int i=0;i<MAXN;++i)
	{
		for(int j=0;j<16;++j)
			if(view(tarray[i],j)==1){
				cout<<i*16+j<<" ";
				ma = 0;
			}
	}
	if(ma) cout<<"none";
	cout<<endl;
	getch();
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值