Cod sursa(job #1572657)

Utilizator cretucalinCretu Calin cretucalin Data 19 ianuarie 2016 00:24:34
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");
void merge(unsigned int arr[], unsigned int size1, unsigned short int low, unsigned int middle, unsigned int high)
{
    unsigned int *temp;
    temp=new unsigned int[size1];
    for (unsigned int i=low; i<=high; i++)
    {
        temp[i]=arr[i];
    }
    unsigned int i=low;
    unsigned int j=middle+1;
  //  int temp[size1];
    unsigned int 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 (unsigned int arr[], unsigned int size1, unsigned int low, unsigned int high)
{
    if(low< high)
    {
        unsigned int middle=(low + high)/2;
        mergeSort(arr, size1, low, middle);
        mergeSort(arr,size1, middle+1,high);
        merge(arr,size1,low,middle,high);
    }
}
unsigned int n;
unsigned int v[500000];
int main()
{
    f>>n;
    for(unsigned int i = 0; i<n;i++)
      f>>v[i];
    mergeSort(v,n,0,n-1);
    for(unsigned int i = 0; i<n;i++)
        g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
}