Cod sursa(job #1542664)

Utilizator RobyulStancu Robert Robyul Data 5 decembrie 2015 16:02:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>

int v[500002], aux[600002];

void interclasare(int v[], 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 v[], int st, int dr)
{
    if(st == dr)
        return;
    int m = (st+dr)/2;
    sortare(v, st, m);
    sortare(v, m+1, dr);
    interclasare(v, st, dr);
}
using namespace std;

int main()
{
    FILE *fin, *fout;
    fin = fopen("algsort.in", "r");
    fout = fopen("algsort.out", "w");

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

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