Cod sursa(job #443062)

Utilizator siminescuPaval Cristi Onisim siminescu Data 15 aprilie 2010 22:34:03
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
int n,v[500001],aux;
void DownHeap( int from, int to )
{
    for( int son=2*from; son < to; from=son, son=2*from )
    {
        if( son < to-1 && v[son+1] > v[son] )
            ++son;
        if( v[from] >= v[son] )
            return;
        aux=v[from];v[from]=v[son];v[son]=aux;
    }
}
void HeapSort( int from, int to )
{
    int i;
    for( i=(to-from)/2; i >= 0; --i )
        DownHeap( i, to );
    while( to > from )
    {
        aux=v[from];v[from]=v[to-1];v[to-1]=aux;
        --to;
        DownHeap( from, to );
    }
}

int main()
{
	int i;
	freopen("algsort.in","r",stdin);
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&v[i]);
	HeapSort(0,n);
	freopen("algsort.out","w",stdout);
	for(i=0;i<n;i++)
		printf("%d ",v[i]);
}