Cod sursa(job #1831403)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 17 decembrie 2016 23:35:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

long* a;
int n,i,j,m,k,t,p;
void swap1(long &c,long &b)
{
    int aux=c;
    c=b;
    b=aux;
}
void heapify(long* a,int n,int i)
{
    int largest=i;
    int l=2*i;
    int r=2*i+1;
    if(l<=n && a[l]>a[largest])
        largest=l;
    if(r<=n && a[r]>a[largest])
        largest=r;
    if(largest!=i)
    {
        swap1(a[i],a[largest]);
        heapify(a,n,largest);
    }
}
void heapSort(long* a,int n)
{
    for(int i=n/2;i>=1;i--)
    heapify(a,n,i);
    for(int i=n;i>=1;i--)
    {
        swap1(a[1],a[i]);
        heapify(a,i-1,1);
    }
}
int main()
{
    f>>n;
    a=new long[n+5];
    for(i=1;i<=n;i++)
        f>>a[i];
    heapSort(a,n);
    for(i=1;i<=n;i++)
        g<<a[i]<<' ';
}