Cod sursa(job #1239016)

Utilizator sherban26FMI Mateescu Serban-Corneliu sherban26 Data 8 octombrie 2014 01:07:12
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <stdio.h>
#include <stdlib.h>

using namespace std;

FILE *fin;
FILE *fout;

void merg(int *v, int l, int mid, int r)
{
    int i, j, c[100], k, x;
    i = l;
    j = mid + 1;
    x = 0;

    while(i <= mid && j <= r)
    {
        if(v[i] < v[j])
        {
            c[x] = v[i];
            i++;
        }
        else
        {
            c[x] = v[j];
            j++;
        }
        x++;
    }

    while(i <= mid)
    {
        c[x] = v[i];
        i++;
        x++;
    }

    while(j <= r)
    {
        c[x] = v[j];
        j++;
        x++;
    }

    for(k = 0; k < x; k++)
        v[l + k] = c[k];
}

void mergesort(int *v, int l, int r)
{
    if (l < r)
    {
        int mid = (l + r) / 2;
        mergesort(v, l, mid);
        mergesort(v, mid + 1, r);
        merg(v, l, mid, r);
    }
}

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

    int v[100], n, i;

    fscanf(fin, "%d", &n);

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

    mergesort(v, 0, n - 1);

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

    fclose(fin);
    fclose(fout);
    return 0;
}