Cod sursa(job #1752147)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 2 septembrie 2016 20:39:13
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
int n;
int A[500000], B[500000];

void mergesort(int *A, int *B, int l, int r){
    if(r - l <= 1)
        return;
    int m = (l+r) >> 1;
    mergesort(A, B, l, m);
    mergesort(A, B, m, r);
    int i, j, k;
    for(i = l, j = m, k = l; j < r || i < m;)
        if(j >= r || i < m && A[i] < A[j])
            B[k++] = A[i++];
        else
            B[k++] = A[j++];
    for(k = l; k < r; ++k)
        A[k] = B[k];
}

int main(){
    FILE *in, *out;
    in = fopen("algsort.in", "r");
    out = fopen("algsort.out", "w");
    fscanf(in,"%d", &n);
    int i;  
    for(i = 0; i < n; ++i)
        fscanf(in,"%d", A+i);
    mergesort(A, B, 0, n);
    for(i = 0; i < n; ++i)
        fprintf(out,"%d ", A[i]);
    return 0;
}