Cod sursa(job #1589561)

Utilizator Adriana_VladoneAdriana Vladone Adriana_Vladone Data 4 februarie 2016 10:28:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
int v[500001];
int aux[500001];


void interclasare(int st, int dr)
{

    int i, j, k, m;
    m=(st+dr)/2;
    i=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];
}


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

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