Cod sursa(job #976013)

Utilizator Daniel3717Aleca Daniel Adrian Daniel3717 Data 22 iulie 2013 12:08:28
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
unsigned int v[500001],ax;
unsigned int i,p,n;
int main(void)
{
    FILE * f;
    f=fopen("algsort.in","r");
    ofstream g("algsort.out");
    fscanf(f,"%d",&n);
    v[0]=0;
    for (i=1;i<=n;i++)
    {
        fscanf(f,"%ud",&ax);
        v[i]=ax;
        p=i;
        while (v[p]<v[p/2])
        {
            ax=v[p];
            v[p]=v[p/2];
            v[p/2]=ax;
            p=p/2;
        }
    }
    while (n>1)
    {
        g<<v[1]<<' ';
        v[1]=v[n];
        n--;
        p=1;
        while (((v[p*2]<v[p])&&(p*2<=n))||((v[p*2+1]<v[p])&&(p*2+1<=n)))
        {
            if ((v[p*2]<=v[p*2+1])&&(p*2<=n))
            {
                ax=v[p];
                v[p]=v[p*2];
                v[p*2]=ax;
                p=p*2;
            }
            else
            {
                ax=v[p];
                v[p]=v[p*2+1];
                v[p*2+1]=ax;
                p=p*2+1;
            }
        }
    }
    g<<v[1];
    g.close();
    return 0;
}