Cod sursa(job #2287619)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 22 noiembrie 2018 09:55:17
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.44 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,MinHeap[500005];
void HeapDown(int x)
{
    bool sw;
    sw=1;
    while(sw==1)
    {
        sw=0;
        if(x*2<=n)
        {
            if(x*2+1<=n)
            {
                if(MinHeap[2*x]<MinHeap[2*x+1])
                {
                    if(MinHeap[x]>MinHeap[2*x])
                    {
                        swap(MinHeap[x],MinHeap[2*x]);
                        x=2*x;
                        sw=1;
                    }
                }
                else
                {
                    if(MinHeap[x]>MinHeap[2*x+1])
                    {
                        swap(MinHeap[x],MinHeap[2*x+1]);
                        x=2*x+1;
                        sw=1;
                    }
                }
            }
            else
            {
                if(MinHeap[x]>MinHeap[2*x])
                {
                     swap(MinHeap[x],MinHeap[2*x]);
                     x=2*x;
                     sw=1;
                }
            }
        }
    }
}
int main()
{
    int i;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>MinHeap[i];
    }
    for(i=n/2;i>=1;i--)
    {
        HeapDown(i);
    }
    while(n>0)
    {
        g<<MinHeap[1]<<" ";
        swap(MinHeap[1],MinHeap[n]);
        n--;
        HeapDown(1);
    }
    return 0;
}