Cod sursa(job #1516215)

Utilizator c0mradec0mrade c0mrade Data 2 noiembrie 2015 20:55:19
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
using namespace std;

int n,a[500001],b[250002];

void interclasare(int i, int m, int j)
{
    int x=i,k=0,y=m+1;
    while(x<=m && y<=j)
        if(a[x]<a[y])
            b[++k]=a[x++];
        else
            b[++k]=a[y++];
    while(x<=m)
        b[++k]=a[x++];
    while(y<=j)
        b[++k]=a[y++];
    int t=i;
    for(int p=1;p<=k;p++)
        a[t++]=b[p];
}

void divideetimpera(int i, int j)
{
    if(i<j){
        int m=(i+j)/2;
        divideetimpera(i,m);
        divideetimpera(m+1,j);
        interclasare(i,m,j);
    }
}

int main(){
    ifstream in("algsort.in");
    ofstream out("algsort.out");
    in>>n;
    for(int i=1;i<=n;i++)
        in>>a[i];
    divideetimpera(1,n);
    for(int i=1;i<=n;i++)
        out<<a[i]<<' ';
    in.close();
    out.close();
    return 0;
}