Cod sursa(job #1040972)

Utilizator cristigrigoreGrigore Cristan Andrei cristigrigore Data 25 noiembrie 2013 11:53:14
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream f("in.txt");
ofstream g("out.txt");
int i,j,m,n,h[2000];
void swap(int k, int t)
{
    int x;
    x=h[t];
    h[t]=h[k];
    h[k]=x;
}
void HeapUp(int k)
{
    int t;
    if(k<=1) return;
    t=k/2;
    if(h[k]>h[t])
    {
        swap(k,t);
        HeapUp(t);
    }
}
void HeapDw(int r, int k)
{
    int St,Dr,i;
    if(2*r<=k && 2*r>0)
    {
        St=h[2*r];
        if(2*i+1 <=k) Dr=h[2*r+1];
               else Dr=St-1;
        if(St>Dr) i=2*r;
        else i=2*r+1;
        if(h[r]<h[i])
        {
            swap(r,i);
            HeapDw(i,k);
        }
    }

}
void HeapSort(int k)
{
    while(k>1)
    {
        swap(1,k); k--;
        HeapDw(1,k);
    }

}
int main()
{
    f>>n;
    for(i=1; i<=n; i++)
    f>>h[i];
    for(i=2; i<=n; i++)
    HeapUp(i);
    HeapSort(n);
    for(i=1; i<=n; i++)
    g<<h[i]<<' ';

    return 0;
}