Cod sursa(job #1535352)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 24 noiembrie 2015 17:57:47
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
# include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500005],w[500005],i,n;
void interclaseaza(int st,int mid,int dr){
    int i=st,j=mid+1,k=st-1;
    while(i<=mid&&j<=dr){
        if(v[i]<v[j]){
            k++;
            w[k]=v[i];
            i++;
        }
        else{
            k++;
            w[k]=v[j];
            j++;
        }
    }
    for(;i<=mid;i++){
        w[++k]=v[i];
    }
    for(;j<=dr;j++){
        w[++k]=v[j];
    }
    for(i=st;i<=dr;i++){
        v[i]=w[i];
    }
}
void sortare(int st,int dr){
    if(st<dr){
        int mid=(st+dr)/2;
        sortare(st,mid);
        sortare(mid+1,dr);
        interclaseaza(st,mid,dr);
    }
}
int main () {
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>v[i];
    }
    sortare(1,n);
    for(i=1;i<=n;i++){
        fout<<v[i]<<" ";
    }
    return 0;
}