Cod sursa(job #2235957)

Utilizator valorosu_300Cristian Gherman valorosu_300 Data 27 august 2018 14:30:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N = 500002;
int v[N];
void downHeap(int l, int t){
    int f = 0, key = v[t], Max;
    while(t != f){
        f = t;
        Max = key;
        if(f*2 <= l && Max < v[f*2])
            t = f*2, Max = v[f*2];
        if(f*2+1 <= l && Max < v[f*2+1])
            t = f*2+1, Max = v[f*2+1];
        v[f] = v[t];
    }
    v[t] = key;
}
void makeHeap(int l){
    for(int i=l/2;i>=1;i--)
        downHeap(l,i);
}
void heapSort(int l){
    makeHeap(l);
    while(l > 1){
        swap(v[1], v[l--]);
        downHeap(l,1);
    }
}
int main()
{
    int n;
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
    in.close();
    heapSort(n);
    for(int i=1;i<=n;i++)
        out<<v[i]<<" ";
    out.close();
    return 0;
}