Cod sursa(job #1383531)

Utilizator robx12lnLinca Robert robx12ln Data 10 martie 2015 12:49:42
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500005],i,n,c,p,aux;
void inter(int a,int b){
    int aux;
    aux=v[a];
    v[a]=v[b];
    v[b]=aux;
    return ;
}
void insert(int n){
    //v[++n]=x;
    c=n;
    p=n/2;
    while(p!=0){
        if(v[c]>v[p]){
            inter(c,p);
            c=p;
            p/=2;
        }else
            break;
    }
}
void sterg(int n){

    p=1;
    c=2;
    while(c<=n){
        if(c+1<=n && v[c+1]>v[c]){
            c++;
        }
        if(v[p]<v[c]){
            inter(c,p);
            p=c;
            c=2*p;
        }else
            break;
    }
}
int main(){
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>v[i];
    }
    for(i=2;i<=n;i++){
        insert(i);
    }
    for(i=n;i>=2;i--){
        inter(1,i);
        sterg(i-1);
    }
    for(i=1;i<=n;i++){
        fout<<v[i]<<" ";
    }
    return 0;
}