Cod sursa(job #1044350)

Utilizator Catalina_BrinzaBrinza Catalina Catalina_Brinza Data 29 noiembrie 2013 17:44:57
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
//
//  main.cpp
//  heap-sort
//
//  Created by Catalina Brinza on 11/26/13.
//  Copyright (c) 2013 Catalina Brinza. All rights reserved.
//

#include <fstream>
#include <vector>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");


int main()
{int n,i,x,j,aux;
    vector<int> a;
    a.push_back(0);
    f>>n>>x; a.push_back(x);
    for (i=2;i<=n;++i)
    {
        f>>x;
        a.push_back(x);
        int in=i;
        while (a[in]<a[in/2])
        {
            aux=a[in];
            a[in]=a[in/2];
            a[in/2]=aux;
            in=in/2;
        }
    }

    int m=n;
    for (i=1;i<=m;++i)
    {
        g<<a[1]<<' ';
        a[1]=a[n];
        n--;
        a.pop_back();
        j=1;
        while (j*2+1<=n)
        {
if (a[j]>a[j*2] && a[j*2]<a[j*2+1])
{
    aux=a[j];
    a[j]=a[j*2];
    a[j*2]=aux;
    j=j*2;
    
}
            else if (a[j]>a[j*2+1] && a[j*2+1]<=a[j*2])
            {
                aux=a[j];
                a[j]=a[j*2+1];
                a[j*2+1]=aux;
                j=j*2+1;
            }
            else break;
            if (j==n) break;
        }

    }
    return 0;
}