Cod sursa(job #1569084)

Utilizator cretucalinCretu Calin cretucalin Data 14 ianuarie 2016 22:31:46
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");
void merge(int arr[], unsigned long size1, unsigned long low, unsigned long middle, unsigned long high)
{
    int *temp;
    temp=new int[size1];
    for (unsigned long i=low; i<=high; i++)
    {
        temp[i]=arr[i];
    }
    unsigned long i=low;
    unsigned long j=middle+1;
  //  int temp[size1];
    unsigned long k=low;

    while (i<=middle && j<= high)
    {
        if(temp[i] <= temp [j])
        {
            arr[k]=temp[i];
            i++;
        }
        else
        {
            arr[k]= temp [j];
            j++;
        }
        k++;
    }
    while(i<=middle)
    {
        arr[k]=temp [i];
        k++;
        i++;
    }
}
void mergeSort (int arr[], unsigned long size1, unsigned long low, unsigned long high)
{
    if(low< high)
    {
        unsigned long middle=(low + high)/2;
        mergeSort(arr, size1, low, middle);
        mergeSort(arr,size1, middle+1,high);
        merge(arr,size1,low,middle,high);
    }
}
long int n;
int v[500000];
int main()
{
    f>>n;
    for(unsigned long i = 0; i<n;i++)
      f>>v[i];
    mergeSort(v,n,0,n-1);
    for(unsigned long i = 0; i<n;i++)
        g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
}