随机生成100万个数,排序后保存在文件中
2013-08-20 22:22
309 查看
转自:http://blog.csdn.net/hackbuteer1/article/details/6574908
随机生成100万个数,存储在文件out1.txt中,使用内部排序完成,并重新储存在文件out2.txt中。
(一)使用STL中的qsort函数进行操作:
[cpp] view
plaincopy
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
int a[1000000];
void load(char filename[]) //写文件
{
int i;
FILE *fp;
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("cannot open file/n");
return;
}
for(i=0;i<1000000;i++)
fprintf(fp,"%d ",a[i]);
}
int cmp(const void *a, const void *b)
{
return (*(int*)a)-(*(int*)b); //从小到大进行排序
}
void paixu()
{
qsort(a,1000000,sizeof(int),cmp);
}
int main(void)
{
int i;
char filename[20];
srand( (unsigned)time( NULL ) ); //初始化随机数
for(i=0;i<1000000;i++) //打印出10个随机数
a[i]=rand();
strcpy(filename,"out1.txt");
load(filename);
paixu();//快速排序
strcpy(filename,"out2.txt");
load(filename);
system("pause");
return 0;
}
(二)递归实现qsort函数进行操作:
[cpp] view
plaincopy
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
int a[1000000];
void load(char filename[]) //写文件
{
int i;
FILE *fp;
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("cannot open file/n");
return;
}
for(i=0;i<1000000;i++)
fprintf(fp,"%d ",a[i]);
}
int partitions(int a[],int low,int high)
{
int pivotkey=a[low]; //基准
while(low<high)
{
while(low<high && a[high]>=pivotkey)
--high;
a[low]=a[high];
while(low<high && a[low]<=pivotkey)
++low;
a[high]=a[low];
}
a[low]=pivotkey;
return low;
}
void qsort(int a[],int low,int high) //快速排序
{
int pivotkey;
if(low<high)
{
//递归调用
pivotkey=partitions(a,low,high);
qsort(a,low,pivotkey-1);
qsort(a,pivotkey+1,high);
}
}
int main(void)
{
int i;
char filename[20];
srand( (unsigned)time( NULL ) ); //初始化随机数
for(i=0;i<1000000;i++) //打印出10个随机数
a[i]=rand();
strcpy(filename,"out1.txt");
load(filename);
qsort(a,0,1000000); //快速排序
strcpy(filename,"out2.txt");
load(filename);
system("pause");
return 0;
}
随机生成100万个数,存储在文件out1.txt中,使用内部排序完成,并重新储存在文件out2.txt中。
(一)使用STL中的qsort函数进行操作:
[cpp] view
plaincopy
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
int a[1000000];
void load(char filename[]) //写文件
{
int i;
FILE *fp;
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("cannot open file/n");
return;
}
for(i=0;i<1000000;i++)
fprintf(fp,"%d ",a[i]);
}
int cmp(const void *a, const void *b)
{
return (*(int*)a)-(*(int*)b); //从小到大进行排序
}
void paixu()
{
qsort(a,1000000,sizeof(int),cmp);
}
int main(void)
{
int i;
char filename[20];
srand( (unsigned)time( NULL ) ); //初始化随机数
for(i=0;i<1000000;i++) //打印出10个随机数
a[i]=rand();
strcpy(filename,"out1.txt");
load(filename);
paixu();//快速排序
strcpy(filename,"out2.txt");
load(filename);
system("pause");
return 0;
}
(二)递归实现qsort函数进行操作:
[cpp] view
plaincopy
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
int a[1000000];
void load(char filename[]) //写文件
{
int i;
FILE *fp;
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("cannot open file/n");
return;
}
for(i=0;i<1000000;i++)
fprintf(fp,"%d ",a[i]);
}
int partitions(int a[],int low,int high)
{
int pivotkey=a[low]; //基准
while(low<high)
{
while(low<high && a[high]>=pivotkey)
--high;
a[low]=a[high];
while(low<high && a[low]<=pivotkey)
++low;
a[high]=a[low];
}
a[low]=pivotkey;
return low;
}
void qsort(int a[],int low,int high) //快速排序
{
int pivotkey;
if(low<high)
{
//递归调用
pivotkey=partitions(a,low,high);
qsort(a,low,pivotkey-1);
qsort(a,pivotkey+1,high);
}
}
int main(void)
{
int i;
char filename[20];
srand( (unsigned)time( NULL ) ); //初始化随机数
for(i=0;i<1000000;i++) //打印出10个随机数
a[i]=rand();
strcpy(filename,"out1.txt");
load(filename);
qsort(a,0,1000000); //快速排序
strcpy(filename,"out2.txt");
load(filename);
system("pause");
return 0;
}
相关文章推荐
- 随机生成100万个数,排序后保存在文件中
- 随机生成100万个数,排序后保存在文件中
- 随机生成100万个数,排序后保存在文件中
- 随机生成100万个数,排序后保存在文件中
- 生成随机码,保存随机文件.
- Python 随机生成100行1000列的0~5之间的数据,并保存到csv文件
- java生成随机uuid并保存到文件
- C++: 生成100万随机数, 排序后保存到文件中
- Java随机生成验证码图片,并且保存到文件系统中
- Java随机生成验证码图片,并且保存到文件系统中
- 随机生成字符,将字符转化成字符串并排序
- 生成随机字符串并排序
- 根据模板生成word文件并导出保存到本地
- C++文本查询程序 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- shuf 命令: 随机排序文件
- javascript批量生成并且保存为txt文件
- 如何使EditPlus在内容发生变动保存保存不自动备份 生成.bak文件
- 作业-创建数组随机生成30个不重复数字进去-在随机出来5个-然后排序输出
- 如何编译生成.exe可执行文件,并保存
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果