Cod sursa(job #1016216)

Utilizator uagamagaMatei Rogoz uagamaga Data 25 octombrie 2013 22:03:18
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");


void merge(int a[],int low,int high,int pivot)
{
    int *b = new int[500001];
    int i,j,h,k;
    i = low;
    j = pivot + 1;
    h = low;

    while((i<=pivot) && (j<=high))
    {

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

    }
    if(i>pivot)
    {

        for(k=j;k<=high;k++)
        {
            b[h] = a[k];
            h++;
        }

    }
    else
    {

        for(k=i;k<=pivot;k++)
        {
            b[h] = a[k];
            h++;
        }

    }

    for(k=low;k<=high;k++) a[k] = b[k];



}

void mergeSort(int v[],int low,int high)
{
    int pivot;
    if(low<high)
    {
        pivot = (low+high)/2;
        mergeSort(v,low,pivot);
        mergeSort(v,pivot+1,high);
        merge(v,low,high,pivot);
    }



}
int main()
{

    int n,i;
    int * v = new int[500001];
    fin>>n;

    for(i=0;i<n;i++)
    {
        fin>>v[i];
    }

    mergeSort(v,0,n-1);

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

    return 0;
}