Pagini recente » Cod sursa (job #2307009) | Cod sursa (job #2648370) | Cod sursa (job #1780391) | Cod sursa (job #1933440) | Cod sursa (job #2508429)
# include <stdio.h>
int a[500001],n;
void sink(int k,int n)
{
int aux,f=2*k;
while(f<=n)
{
if(f<n && a[f]<a[f+1])
f++;
if(a[f]>a[k])
{
aux=a[k];
a[k]=a[f];
a[f]=aux;
k=f;f=2*k;
}
else
break;
}
}
void main()
{
int i,aux;
FILE *f,*g;
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",a+i);
for(i=n/2;i>=1;i--)
sink(i,n);
for(i=n;i>1;i--)
{
aux=a[1]; a[1]=a[i]; a[i]=aux;
sink(1,i-1);
}
for(i=1;i<=n;i++)
fprintf(g,"%d ",a[i]);
}