Cod sursa(job #2508429)

Utilizator daniel.vbVasile Daniel daniel.vb 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]);
}