Cod sursa(job #1526611)

Utilizator cutzulackeDinca Teodora cutzulacke Data 16 noiembrie 2015 22:00:54
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void max_heap(int v[], long long i, long long n)
{
    long long stang, dreapt, large, poz;
    stang=2*i;
    dreapt=(2*i+1);
    if( (stang<=n) && (v[stang]>v[i]) )
    large=stang;
    else
    large=i;
    if( (dreapt<=n) && (v[dreapt]>v[large]) )
    large=dreapt;
    if( large!=i )
    {
        poz=v[i];
        v[i]=v[large];
        v[large]=poz;
        max_heap(v, large, n);
    }

}
void constr_max_heap(int v[], long long n)
{
    int k;
    for( k=n/2; k>=1; k--)
    {
        max_heap( v, k, n);
    }
}
void HeapSort(int v[], long long n)
{
    constr_max_heap( v, n);
    int i, tempor;
    for( i=n; i>=2; i--)
    {
        tempor=v[i];
        v[i]=v[1];
        v[1]=tempor;
        max_heap( v, 1, i-1);
    }
}
int main()
{
    long long n, i;
    int v[500010];
    in>>n;
    for( i=0; i<n; i++)
    {
        in>>v[i];
    }
    HeapSort( v, n);
    for( i=0; i<n; i++)
    {
        out<<v[i]<<' ';
    }
    return 0;
}