您的位置:首页 > 其它

排序文件中的N个不重复的正整数

2006-12-19 07:19 387 查看
From 《编程珠玑》:一个文件中至多包含n个不重复的正整数,每个正整数都小于n,这里n=10^7。要求:以增量的形式输出经排序后的整数(限用1M内存)。

思路1:1M内存大约可以存储250000个整数。因此我们可以对输入文件遍历40次,第一次遍历过程中将值大于0、小于249999的所有整数读入内存,然后进行快速排序,再写入目标文件;第二次遍历过程中将值大于250000、小于499999的所有整数读入内存,排完序后写入目标文件,后面依此类推;第40次遍历过程中将大于9750000、小于9999999的所有整数读入内存,排完序后写入目标文件。此时目标文件中的整数已按增量排完序,顺序输出即可。

思路2:系统排序
(Command命令行)>sort originalFileName.ext >> targetFileName.ext

思路3:位图数据结构。

#define bitSperWord 32
#define shift 5
#define mask 0x1f
#define N 10000000
int a[1+N/bitSperWord];
int mail(void)
int intcomp(int *x,int *y)
int a[10000000];
int main(void)
...{


int i,n=0;


while(scanf("%d",&a
)!=EOF)


n++;


qsort(a,n,sizeof(int),intcomp);


for(i=0;i<n;i++)


printf("%d" ",a[i]);


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐