zn

#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1f
#define N 1000000


int a[1+N/BITSPERWORD];


void set_i(int i)
{
a[i>>SHIFT] |= (1<<(i&MASK)); //a[i>>SHIFT] 每1個int32位爲一個桶,a[i>>SHIFT]相當於找那個32位,
  //1<<i(i&MASK),32位中中的那位爲1
}


int test_i(int i)
{
return a[i>>SHIFT] & (1 << (i&MASK));//跟1與
}


void clr_i(int i)
{
a[i >> SHIFT] &= ~(1<<(i&MASK));//跟0與
}


#define SOURCENUM 1000000
int testdata[SOURCENUM];
int main()
{
/*for (int i = 0; i < (1+N/BITSPERWORD); i++ )
{
a[i] = 0;
}*/
//ofstream file1("D:\\file.txt");
//數組testdata中存儲着0 - 3999之間的隨機數,不重複去其前2000個進行測試

/*
產生文件
cout<<"shangglag"<<endl;
srand((unsigned)time(NULL));
for (int i = 0,j = 1; i < SOURCENUM; i++,j++)testdata[i] = j;
for(int i = 0; i <  SOURCENUM; i++)swap(testdata[i],testdata[rand()%(SOURCENUM-1 - i + 1)+i]);
FILE* fp1 = fopen("D:\\file.txt","w+");
if(!fp1)return 0;
for(int i = 0; i <SOURCENUM; i++)
{
fprintf(fp1,"%d\n",testdata[i]);
cout<<"-";
}
fclose(fp1);
*/
FILE *fpin = fopen("D:\\file.txt","r");
FILE *fpout = fopen("D:\\fpout.txt","w+");
int m = 0;
for (int i = 0; i < 500000;i++)
{
if(fscanf(fpin,"%d",&m)==1)
{
//cout << m<<endl;
set_i(m);
}
}
for (int i = 1; i <= 1000000;i++)
{
if (test_i(i))
{
fprintf(fpout,"%d\n",i);
}
}
fclose(fpin);
fclose(fpout);
//cout<<"-----------------"<<endl;
////for (int i = 0; i < 2000; i++)cout<<testdata[i]<<"-";
//cout<<endl;
//cout<<"--------------------------"<<endl;


//for (int i = 0; i <2000; i++)
//{
// set_i(testdata[i]);
// cout<<testdata[i]<<"-";
//}
//
//for (int i = 0; i < (1+N/BITSPERWORD); i++ )
//{
// cout<<(bitset<32>)a[i]<<endl;
//}
//
//for (int i = 0; i < 4000; i++)
//{
// if (test_i(i))
// {
// cout<<i<<"-";
// }
//}
//cout<<endl;
//cout<<"-------------------------endl---------------";
////----stl set
//set<int> S;
//for (int i = 0; i < 2000; i++)
//{
// S.insert(testdata[i]);
//}
//set<int>::iterator siterator;
//for (siterator = S.begin();siterator!=S.end();++siterator)
//{
// cout<<*siterator<<"-";
//}
system("pause");
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章