Cod sursa(job #778950)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 16 august 2012 12:34:02
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<stdio.h>
int a[500001],b[500001],nr,nr2,ok,n,m,aux;
void heap_up(int i)
{
    if (i>1)
        if (a[i]>a[i/2])
        {
            aux=a[i];
            a[i]=a[i/2];
            a[i/2]=aux;
            heap_up(i/2);
        }
}
void heap_down(int i)
{
    if ((a[i]<a[i*2])&&(a[i*2]>a[i*2+1]))
    {
        aux=a[i];
        a[i]=a[i*2];
        a[i*2]=aux;
        heap_down(i*2);
    }
    if ((a[i]<a[i*2+1])&&(a[i*2]<a[i*2+1]))
    {
        aux=a[i];
        a[i]=a[i*2+1];
        a[i*2+1]=aux;
        heap_down(i*2+1);
    }
}
int main()
{
    int i;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        heap_up(i);
    }
    nr2=n;
    for (i=1;i<=nr2;i++)
    {
        a[1]=a[n];
        n--;
        heap_down(1);
    }
    for (i=1;i<=nr2;i++)
        printf("%d\n",a[i]);
    return 0;
}