Cod sursa(job #1019955)

Utilizator saregardAndrei Tarba saregard Data 1 noiembrie 2013 13:01:01
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
using namespace std;
int v[1000], c[1000];

void interclasare (int left, int right, int m)
{
    int l=left, n=m+1, k=0, i;
    while (left<=m && n<=right)
    {
        if (v[left]<v[n])
        {
            c[k]=v[left];
            left++;
        }
        else
        {
            c[k]=v[n];
            n++;
        }
        k++;
    }
    while (left<=m)
    {
        c[k]=v[left];
        left++;
        k++;
    }
    while (n<=right)
    {
        c[k]=v[n];
        n++;
        k++;
    }
    left=l;
    for (i=left; i<=right; i++)
        v[i]=c[i-left];
}

void merge_sort (int left, int right)
{
    int m;
    if (left<right)
    {
        m=(left+right)/2;
        merge_sort (left, m);
        merge_sort (m+1, right);
        interclasare (left, right, m);
    }
}

int main ()
{
    int n, i;
    ifstream f ("algsort.in");
    ofstream g ("algsort.out");
    f>>n;
    for (i=0; i<n; i++)
        f>>v[i];
    merge_sort (0, n-1);
    for (i=0; i<n; i++)
        g<<v[i]<<" ";
    return 0;
}