Cod sursa(job #1237513)

Utilizator victor_crivatCrivat Victor victor_crivat Data 4 octombrie 2014 11:35:00
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int i,j,n,k,h[10000];
void swap(int i,int k)
{
    int aux;
    aux=h[k];
    h[k]=h[i];
    h[i]=aux;

}
void heapdown(int poz,int k)
{
    int i;
    if (2*poz>k) return;
    if ((2*poz)+1<=k)
    {
        if (h[2*poz]>h[2*poz+1]) i=2*poz;
        else i=(2*poz)+1;
    }
    else i=2*poz;
    if (h[poz]<h[i])
    {
        swap(i,poz);
        heapdown(i,k);
    }

}
void sort(int k)
{
    while(k>1)
    {
        swap (1,k);
        k--;
        heapdown(1,k);
    }
}
int main()
{
    f>>n;
    for (i=1; i<=n; i++) f>>h[i];
    for (i=n/2; i>0; i--) heapdown(i,n);
    sort (n);
    for (i=1; i<=n; i++) g<<h[i]<<" ";
    f.close();
    g.close();
    return 0;
}