Cod sursa(job #1049262)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 7 decembrie 2013 09:56:30
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#define DIM 500010
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n, v[DIM], c[DIM], i;

void copy(int x, int y, int c[], int k){
    int i, j;
    for(i=x, j=1; i<=y; i++, j++)
        v[i]=c[j];
}

void interclasare(int x, int y, int m){
    int i=x, j=m+1, k=0;
    while(i<=m && j<=y)
    {
        if(v[i]<v[j])
            c[++k]=v[i], i++;
        else
            c[++k]=v[j], j++;
    }
    while(i<=m)
        c[++k]=v[i], i++;
    while(j<=y)
        c[++k]=v[j], j++;
    copy(x, y, c, k);
}

void sortare(int x, int y){
    if(x==y)
        return;
    int m=(x+y)/2;
    sortare(x, m);
    sortare(m+1, y);
    interclasare(x, y, m);
}

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;
}