Cod sursa(job #2195902)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 17 aprilie 2018 17:19:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500005],n;
void HeapSort()
{
    int imax,l,r,aux,nod;
    for(int i=n/2;i>=1;i--)
    {
        imax=i;
        do
        {
            nod=imax;
            l=2*nod; r=2*nod+1;
            imax=nod;
            if(l<=n && v[l]>v[imax])
                imax=l;
            if(r<=n && v[r]>v[imax])
                imax=r;
            aux=v[nod]; v[nod]=v[imax]; v[imax]=aux;

        }while(imax!=nod);
    }
    for(int i=n;i>=1;i--)
    {
        aux=v[1]; v[1]=v[i]; v[i]=aux;
        imax=1;
        do
        {
            nod=imax;
            l=2*nod; r=2*nod+1;
            imax=nod;
            if(l<=i-1 && v[l]>v[imax])
                imax=l;
            if(r<=i-1 && v[r]>v[imax])
                imax=r;
            aux=v[nod]; v[nod]=v[imax]; v[imax]=aux;

        }while(imax!=nod);
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    HeapSort();
	for(int i=1;i<=n;i++)
        cout<<v[i]<<' ';
}