Cod sursa(job #325065)

Utilizator kojocojocaru aurelian kojo Data 18 iunie 2009 18:57:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream.h>
#define max 500000
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,a[max];
  void citire()
	{
	  f>>n;
	  for(int i=1;i<=n;i++)
         f>>a[i];
	}

void afisare()
	{
     for(int i=1;i<=n;i++)
       g<<a[i]<<' ';
	}

void cerne(int i,int n)
{int x,j,k=i;

do  { j=k;
	 if(2*j<=n&&a[k]<a[2*j])
		 k=2*j;
     if(2*j+1<=n&&a[k]<a[2*j+1])
		 k=2*j+1;
	 x=a[k];
	 a[k]=a[j];
	 a[j]=x;
		}while(j!=k);
}

void make_heap()
{
for(int i=n/2;i>0;i--)
     cerne(i,n);

}

void heapsort()
{int x;
make_heap();
for(int i=n;i>=2;i--)
	{x=a[i];
	 a[i]=a[1];
	 a[1]=x;
	 cerne(1,i-1);}
}

int main()
{citire();
heapsort();
afisare();
return 0;
}