堆排序,我不知道错哪了,求助各位大牛
#include <stdio.h>typedef struct
{
int key;
}rec;
typedef rec sqlist[30];
void sift(sqlist r,int s,int m)
{
int j=2*s;
rec x;
x=r[s];
for(j=2*s;j<=m;j=s*2)
{
if(j<m&&(r[j].key<r[j+1].key))
++j;
//q++; if(!(x.key<r[j].key)) break;
r[s]=r[j];s=j; }
r[s]=x;
}
void heapsort(sqlist &r,int m)
{
int i;
rec w;
for(i=m/2;i>=1;i--)
sift(r,i,m);
for(i=m;i>=2;i--)
{
w=r[i];r[i]=r[1];
r[1]=w;
sift(r,1,i-1);
}
}
void main()
{
sqlist s;
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&s[i].key);
heapsort(s,n);
for(i=0;i<n;i++)
printf("%d ",s[i].key);
printf("\n");
}