Cod sursa(job #1321331)

Utilizator VladutZ94FMI Chichirau Vlad Vasile VladutZ94 Data 19 ianuarie 2015 00:07:59
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <cstdio>

using namespace std;

int a[500001];
void Merge(int arr[], int size, int low, int middle, int high)
{
    int temp[size];
    for(int i=low;i<=high;i++)
        temp[i]=arr[i];
    int i=low;
    int j=middle+1;
    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];
        i++;
        k++;
    }
}

void MergeSort (int arr[] ,int size ,int low,int high)
{
    if(low<high)
    {
        int middle=(low+high)/2;
        MergeSort(arr, size, low, middle);
        MergeSort(arr, size, middle+1, high);
        Merge(arr, size, low, middle, high);
    }
}
int main()
{
    freopen ("algsort.in","r",stdin);
    freopen ("algsort.out","w",stdout);
    int n,i,size;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    size=n;
    MergeSort(a, size, 1, n);
    for(i=1;i<=n;i++)
        printf("%d ",a[i]);
    return 0;
}