Cod sursa(job #2195725)

Utilizator EmplopiStefan Nitu Emplopi Data 17 aprilie 2018 11:37:34
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.89 kb
#include <stdio.h>
#include <stdlib.h>

void ic(int st, int dr);

int v[500002], aux[500002];

void dei(int st, int dr){
    int m;
    if(st==dr)
        return;
    m=(st+dr)/2;
    dei(st, m);
    dei(m+1, dr);
    ic(st, dr);
}

void ic(int st, int dr){
    int m, i, j, k;
    m=(st+dr)/2;
    i=st;
    k=st;
    j=m+1;
    while(i<=m && j<=dr){
        if(v[i]<=v[j])
            aux[k++]=v[i++];
        else
            aux[k++]=v[j++];
    }
    while(i<=m)
        aux[k++]=v[i++];
    while(j<=dr)
        aux[k++]=v[j++];
    for(k=st;k<=dr;k++)
        v[k]=aux[k];
}

int main(){
    FILE *fin, *fout;
    int n, i;
    fin=fopen("algsort.in", "r");
    fout=fopen("algsort.out", "w");
    fscanf(fin, "%d", &n);
    for(i=0;i<n;i++)
        fscanf(fin, "%d", &v[i]);
    dei(0, n-1);
    for(i=0;i<n;i++)
        fprintf(fout, "%d ", v[i]);
    fclose(fin);
    fclose(fout);

    return 0;
}