随机生成100万个数,排序后保存在文件中

来源:互联网 发布:软件下载万一网 编辑:程序博客网 时间:2024/05/22 03:37

随机生成100万个数,存储在文件out1.txt中,使用内部排序完成,并重新储存在文件out2.txt中。

(一)使用STL中的qsort函数进行操作:

#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函数进行操作:

#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;}


原创粉丝点击