Cod sursa(job #1315524)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 12 ianuarie 2015 21:26:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[500000],n,i;

void heapsort(int a[500000], int N)
{
    if(N==0) return;
    int t;
    int n=N,p=N/2,index,c;

    while (1)
        {
            if(p>0) t = a[--p];
         else
            {n--;
            if (n==0) return;
            t=a[n];
            a[n]=a[0];}

        index=p;
        c=index * 2 + 1;
        while(c<n)
            { if(c+1<n  &&  a[c+1]>a[c]) c++;

            if (a[c]>t)
                {a[index]=a[c];
                index=c;
                c=index * 2 + 1;}
             else break;}
        a[index]=t;
    }
}
int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    f>>n;
    for(i=0;i<n;i++) f>>a[i];
    heapsort(a,n);
    for(i=0;i<n;i++) g<<a[i]<<' ';
    f.close();
    g.close();
    return 0;
}