Cod sursa(job #1280764)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 2 decembrie 2014 14:02:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,i,a[500002];
void interclasare(int p,int m,int u){
    int b[u-p+1],i,j,k;
    i=p;
    j=m+1;
    k=0;
    while(i<=m && j<=u)
        if(a[i]<a[j])
            b[++k]=a[i++];
        else
            b[++k]=a[j++];
    for(;i<=m;i++)
        b[++k]=a[i];
    for(;j<=u;j++)
        b[++k]=a[j];
    for(i=1;i<=k;i++) a[i+p-1]=b[i];
}
void mergesort(int p,int u){
    if(p==u)
        return;
    int m=(p+u)/2;
    mergesort(p,m);
    mergesort(m+1,u);
    interclasare(p,m,u);
}
int main(){
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    mergesort(1,n);
    for(i=1;i<=n;i++)
        fout<<a[i]<<" ";
    fin.close();fout.close();
    return 0;

}