Cod sursa(job #893577)

Utilizator CS-meStanca Marian Ciprian CS-me Data 26 februarie 2013 16:32:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>
#define DIM 500010
FILE *fin=fopen("algsort.in","r");
FILE *fout=fopen("algsort.out","w");
int v[DIM], n, a[DIM];


void interclasare(int p, int u, int m){
int nr = p-1;
int i,j;
    for(i = p, j = m+1 ; i<=m && j<=u; ){
        if(v[i]<v[j]){
            a[++nr]=v[i++];
        }
        else{
            a[++nr]=v[j++];
        }
    }

    for(; i<=m; i++){
        a[++nr]=v[i];
    }

    for(; j<=u; j++){
        a[++nr]=v[j];
    }


    for(i = p; i<=u; i++){
        v[i]=a[i];
    }

}

void merge_sort(int p , int u ){
    if(u-p>=1){
        int m = (p+u)/2;

        merge_sort(p,m);
        merge_sort(m+1,u);

        interclasare(p,u,m);
    }
}

int main(){

    fscanf(fin,"%d",&n);
    for(int i = 1; i <= n; i++){
        fscanf(fin,"%d",&v[i]);
    }


    merge_sort(1,n);

    for(int i = 1; i<=n; i++){
        fprintf(fout, "%d ", v[i]);
    }


return 0;
}