Cod sursa(job #1385063)

Utilizator danstefanDamian Dan Stefan danstefan Data 11 martie 2015 17:43:07
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,i,v[500010];
    ofstream g ("algsort.out");
void hip(int i){
    int fs,fd;
    if(i*2<=n)fs=v[i*2];
    if(i*2+1<=n)fd=v[i*2+1];
    if(v[i]<fs)swap(v[i],v[i*2]);
    else
    if(v[i]<fd)swap(v[i],v[i*2+1]);}
    void hipp(int n){
        swap(v[1],v[n]);
        n--;
        for(i=1;i<=n/2;i++){
            if(v[i]<v[i*2]&&i*2<=n)swap(v[i],v[i*2]);
            if(v[i]<v[i*2+1]&&i*2+1<=n)swap(v[i],v[i*2+1]);}
       if(n>1) hipp(n);}
int main(){
    freopen("algsort.in","r",stdin);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    scanf("%d",&v[i]);
    for(i=1;i<=n/2;i++)
    hip(i);
    hipp(n);
    for(i=1;i<=n;i++)
    g<<v[i]<<" ";
    return 0;}