显示没有错误,但运行时显示.exe文件停止工作,无法将数据写入文件
#include <stdio.h>#include <stdlib.h>
#include <time.h> //用到了time函数
int quicksort();
void insertsort();
void merge();
void merge_sort();
int main()
{
int a[1000000];
int i,number,number1;
FILE *fp1,*fp2;
srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样
//将随机产生的10000个数放入 input.text
fp1=fopen("input.txt","r+");
if(fp1==NULL)
{
printf("open file failed\n");
return -1;
}
for (i=0; i<50; i++)
{
if(i%10==0&&i!=0)
printf("\n");
number = rand() % 101; //产生0-100的随机数
a[i]=number;
fprintf(fp1,"%d ", number);
}
quicksort(a,50);
fclose(fp1);
//将排好序的数放入output.text
fp2=fopen("output.txt","w");
if(fp2==NULL)
{
printf("open file failed\n");
return -1;
}
for(i=0;i<50;i++)
{
if(i%10==0&&i!=0)
printf("\n");
fprintf(fp2,"%d ",quicksort(a,50));
}
fclose(fp2);
return 0;
}
//快速排序
int quicksort(int a[],int number)
{
int i=0;
int j=number-1;
int key=a[0];
if(number>1) //一个数不需排序
{
while(i!=j) //i=j是排序停止
{
for(;i<j;j--)
{
if(key>a[j])
{ a[i]=a[j];
break;
}
}
for(;i<j;i++)
{
if(key<a[i])
{
a[j]=a[i];
break;
}
}
a[i]=key;
}
//递归调用,分治的思想,直到数组个数为1停止
quicksort(a,i); //将原来的数组一分为二,前半部分
quicksort(a+i+1,number-i-1);//后半部分
}
return 0;
}