Cod sursa(job #881853)

Utilizator NistorSergiuNistor Sergiu NistorSergiu Data 18 februarie 2013 18:25:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
using namespace std;
int h[500001];
void combheap(int h[],int p, int n)
{
	int v=h[p],tata=p,fiu=2*p;
	while(fiu<=n)
	{
		if(fiu<n)
			if(h[fiu]<h[fiu+1]) fiu++;
		if(v<h[fiu])
		{
			h[tata]=h[fiu];
			tata=fiu;
			fiu=2*tata;
		}
		else fiu=n+1;
	}
	h[tata]=v;
}
void crheap(int h[], int n)
{
	int i;
	for(i=n/2;i>0;i--)
		combheap(h,i,n);
}
void hsort(int h[], int n)
{
	int i,aux;
	crheap(h,n);
	for(i=n;i>0;i--)
	{
		aux=h[i];
		h[i]=h[1];
		h[1]=aux;
		combheap(h,1,i-1);
	}
}
int main()
{
	int n,i;
	ifstream f("algsort.in");
	f>>n;
	for(i=1;i<=n;i++)
		f>>h[i];
	f.close();
	hsort(h,n);
	ofstream g("algsort.out");
	for(i=1;i<=n;i++)
		g<<h[i]<<" ";
	g.close();
	return 0;
}