Cod sursa(job #2508429)
| Utilizator | Data | 12 decembrie 2019 09:48:58 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 0 |
| Compilator | c-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.68 kb |
# 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]);
}
