1、针对不重复的稠密集合,如不重复的整数
上代码
例程1:生成不重复的整数,并保存在in.txt文件中
#include
#include
int main()
{
int i = 1000000, j = 8999999;
FILE *fp;
fp = fopen( "in.txt", "r+" );
while(1)
{
i += j;
j = -j;
if( j > 0 )
j--;
else
j++;
if( i % 7 != 0 )
fprintf( fp, "%d\n", i );
if( i == 5500000 )
break;
}
}
例程2:排序程序
#include
#include
void setBit( char *ptr, int N, int v )
{
ptr += N / 8;
N = N % 8;
if( v == 0 )
*ptr = *ptr & ~( 1 << ( 7 - N ) );
else
*ptr = *ptr | ( 1 << ( 7 - N ) );
}
int getBit( char *ptr, int N )
{
ptr += N / 8;
N = N % 8;
if( *ptr & ( 1 << ( 7 - N ) ) )
return 1;
else
return 0;
}
int main()
{
char *ptr;
int i, j;
FILE *fp, *fpin;
ptr = malloc( 1250000 );
for( i = 0; i < 10000000; i++ )
setBit( ptr, i, 0 );
fpin = fopen( "in.txt", "r" );
while( fscanf( fpin, "%d", &j ) != EOF )
setBit( ptr, j, 1 );
fp = fopen( "out.txt", "a+" );
for( i = 0; i < 10000000; i++ )
if( getBit( ptr, i ) )
fprintf( fp, "%d\n", i );
}
测试时间:编译时间约3s,执行时间约7s
《“利用位图数据结构(位图法)排序不重复数字(C语言)”》 有 1 条评论
如有疑问,请联系67803698##qq.com,##换成@