Cod sursa(job #1221775)

Utilizator forever16Alex M forever16 Data 21 august 2014 14:11:01
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#define MAX_LENGTH 500000

using namespace std;

int v[MAX_LENGTH], aux[MAX_LENGTH], n;

int merge_sort(int left, int right)
{
    int mid, i, j, pos;
    if(left < right - 1)
    {
        mid = (left + right) / 2;
        pos = left;
        merge_sort(left, mid);
        merge_sort(mid, right);
        i = left;
        j = mid;
        while(i < mid || j < right)
        {
            if(i >= mid)
                while(j < right)
                    aux[pos++] = v[j++];
            else
            {
                if(j >= right)
                    while(i < mid)
                        aux[pos++] = v[i++];
                else
                {
                    if(v[i] < v[j])
                        aux[pos++] = v[i++];
                    else
                        aux[pos++] = v[j++];
                }
            }
        }
        for(i = left; i < right ; i++)
            v[i] = aux[i];
    }
}

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