Cod sursa(job #779244)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 17 august 2012 10:03:55
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<stdio.h>
int a[500000],b[500000],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);
    }
    nr=0;
    nr2=n;
    for (i=1;i<=nr2;i++)
    {
        b[i]=a[1];
        a[1]=a[n];
        a[n]=-1;
        n--;
        heap_down(1);
    }
    for (i=nr2;i>=1;i--)
        printf("%d ",b[i]);
    return 0;
}