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

               

随机生成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;}

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值