Cod sursa(job #1081456)

Utilizator AllxCucuCucu Alexandru AllxCucu Data 13 ianuarie 2014 17:21:36
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#define max 500005
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
void swap(int a[max],int i,int j) 
{
	int aux=a[i];
	a[i]=a[j];
	a[j]=aux;
}
void downheap(int a[],int v,int n) 
{
	int w=2*v+1;
	while(w<n)
	{
		if(w+1<n) 
		if(a[w+1]>a[w]) w++;
		if(a[v]>a[w]) return;
		swap(a, v,w);
		v=w;
		w=2*v+1;
	}
}
void heapsort(int a[max],int n) 
{
	for(int v=n/2-1; v>=0; v--)
	downheap(a, v, n);
	while(n>1)
	{
		n--;
		swap(a, 0, n);
		downheap(a, 0, n);
	}
}
int main()
{
	int a[max],n;
	cin>>n;
	for(int i=0; i<n; i++)
	cin>>a[i];
	heapsort(a, n);
	for(int i=0; i<n; i++)
	cout<<a[i]<<' ';
	return 0;
}