Cod sursa(job #1058974)

Utilizator xsilviuxCretu Silviu xsilviux Data 16 decembrie 2013 00:18:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include<fstream>

#define MAX_VECTOR 500007

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

void merge(int *a, int *b, int min, int pivot, int max)
{
    int k,h,j,i;

    i=min;
    h=min;
    j=pivot+1;

    while((h<=pivot)&&(j<=max))
    {
        if(a[h]<=a[j])
        {
            b[i]=a[h];
            h++;
        }
        else
        {
            b[i]=a[j];
            j++;
        }
        i++;
    }

    if(h>pivot)
    {
        for(k=j; k<=max; k++)
        {
            b[i]=a[k];
            i++;
        }
    }
    else
    {
        for(k=h; k<=pivot; k++)
        {
            b[i]=a[k];
            i++;
        }
    }

    for(k=min; k<=max; k++)
        a[k]=b[k];
}

void mergesort(int *a, int*b, int min, int max)
{
    int pivot;

    if(min<max)
    {
        pivot=(min+max)/2;
        mergesort(a,b,min,pivot);
        mergesort(a,b,pivot+1,max);
        merge(a,b,min,pivot,max);
    }
}

int main()
{
    int a[MAX_VECTOR];
    int num;

    f>>num;

    for(int i = 0;i<num;i++)
        f>>a[i];

    int b[MAX_VECTOR];

    mergesort(a,b,0,num-1);

    for(int i=0; i<num; i++)
        g<<a[i]<<" ";
}