Cod sursa(job #1039855)

Utilizator SilviussMezei Silviu Silviuss Data 23 noiembrie 2013 17:36:38
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n,i,j,k,*v;

void heapsort()
{
    for(i=0;i<n;++i)
        for(j=i;j && v[j]>v[j/2];j>>=1)
            swap(v[j],v[j/2]);
    while(i)
    {
        j=0;
        swap(v[0],v[i-1]);
        while(j<(i-1)/2)
        {
            if(v[2*j]>v[2*j+1])
                if(v[j]<v[2*j])
                {
                    swap(v[j],v[2*j]);
                    j<<=1;
                }
                else
                    break;
            else
                if(v[j]<v[2*j+1])
                {
                    swap(v[j],v[2*j+1]);
                    j=j*2+1;
                }
                else
                    break;
        }
        i--;
    }
}

int main()
{
    fin>>n;
    v=new int[n];
    for(i=0;i<n;++i)
        fin>>v[i];
    heapsort();
    for(i=0;i<n;++i)
        fout<<v[i]<<" ";
}