Cod sursa(job #1011470)

Utilizator sateanuAldea Andrei sateanu Data 16 octombrie 2013 21:15:41
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
//merge sort
using namespace std;
int v[100000],c[100000];
void merge_vec(int *v, int i_left, int f_left, int i_right, int f_right)
{
    int i=1,j;
    int s_left=i_left;
    while(i_left<=f_left && i_right <= f_right)
    {
        if(v[i_left]<v[i_right])
            c[i++]=v[i_left++];
        else
            c[i++]=v[i_right++];
    }
    while(i_left<=f_left)
    {
        c[i++]=v[i_left++];
    }
    while(i_right <= f_right)
    {
        c[i++]=v[i_right++];
    }
    for(i=s_left,j=1;i<=f_right;i++,j++)
        v[i]=c[j];
}

void merge_sort(int *v,int left, int right)
{
    if(left==right)
        return;
    int middle=(left+right)/2;
    merge_sort(v,left,middle);
    merge_sort(v,middle+1,right);
    merge_vec(v,left,middle,middle+1,right);

}

int main()
{
    int n;
    ifstream f("algsort.in");
    ofstream g("algsort.out");

    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];

    merge_sort(v,1,n);

    for(int i=1;i<=n;i++)
        g<<v[i]<<" ";

    return 0;
}