Cod sursa(job #2175287)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 16 martie 2018 16:26:52
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");
int h[10001],l;
void up (int p)
{
    if(p>1&&h[p]<h[p/2])
    {
        swap(h[p],h[p/2]);
        up(p/2);
    }
}


void down (int p)
{
    if(2*p+1<=l&&(h[2*p]<h[p]||h[2*p+1]<h[p]))
    {
        if(h[2*p]<h[2*p+1])
        {
            swap(h[p],h[2*p]);
            down(2*p);
        }
        else
        {
            swap(h[p],h[2*p+1]);
            down(2*p+1);
        }
    }
    else if(2*p<=l&&h[2*p]<h[p])swap(h[p],h[2*p]);
}

int n,x,i;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>x;
        l++;
        h[l]=x;
        up(l);
    }

    for(i=1;i<=n;i++)
    {

      g<<h[1]<<" ";
      swap(h[1],h[l]);
      l--;
      down(1);
    }
    return 0;
}