大神们帮我看看这个程序出错在哪里
#include<stdio.h>#include<math.h>
#include<stdlib.h>
#include<time.h>
void swap(int A[],int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void pushdown(int first,int last,int A[])
{
int r;
r=first;
while(r<=last/2)
if(r==last/2 && last%2==0)
{
if(A[r]>A[2*r])
swap(A,r,2*r);
r=last;
}
else if(A[r]>A[2*r]&&A[2*r]<=A[2*r+1])
{
swap(A,r,2*r);
r=2*r;
}
else if(A[r]>A[2*r+1]&&A[2*r+1]<A[2*r])
{
swap(A,r,2*r);
r=2*r+1;
}
else r=last;
}
void sort(int n,int A[])
{
int i;
for(i=n/2;i>=1;i--)
pushdown(i,n,A);
for(i=n;i>=2;i--)
{
swap(A,1,i);
pushdown(1,i-1,A);
}
for(i=0;i<10;i++)
{
printf("%d,",A[i]);
}
}
void main()
{
FILE *fp1,*fp2;
int a=0,b=0,j,n=10,A[10];
char ch;
if((fp1=fopen("input.txt","r"))==NULL)
printf("file open error.\n");
if((fp2=fopen("output.txt","w"))==NULL)
printf("file open error.\n");
while((ch=fgetc(fp1))!=' ')
{
j=ch-48;
a=a*10+j;
}
while((ch=fgetc(fp1))!=EOF)
{
j=ch-48;
b=b*10+j;
}
srand((unsigned)time(NULL));
for(int i=0;i<10;i++)
{
A[i]=rand()%(b-a)+a;
printf("%d,",A[i]);
}
sort(n,A);
fprintf(fp2,"伪随机数序列为:\n");
for(i=0;i<10;i++)
{
fprintf(fp2,"%d,",A[i]);
}
fprintf(fp2,"堆排序序列为:\n");
for(i=0;i<10;i++)
{
fprintf(fp2,"%d,",A[i]);
}
fclose(fp1);
fclose(fp2);
getchar();
}
出来的伪随机数没有按最小堆排序,求解,跪谢!