Cod sursa(job #1900256)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 3 martie 2017 11:35:14
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n, i, a[500010];


void mergesort (int low, int high, int mid)
{
    int i, j, k, c[500010];
    i=low; k=low; j=mid+1;
    while (i<=mid && j<=high){
        if (a[i]<=a[j]) c[k]=a[i], k++, i++;
        else c[k]=a[j], k++, j++;
    }
    while (i<=mid){
        c[k]=a[i]; k++; i++;
    }
    while (j<=high){
        c[k]=a[j]; k++; j++;
    }
    for (i=low; i<k; i++)
        a[i]=c[i];
}

void merge_sort(int low, int high)
{
    int mid;
    if (low<high){
        mid=low+(high-low)/2;
        merge_sort(low, mid);
        merge_sort(mid+1, high);
        mergesort(low, high, mid);
    }
    return;
}

int main ()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    scanf("%d", &n);
    for (i=1; i<=n; i++)
        scanf("%d", &a[i]);
    merge_sort(1, n);
    for (i=1; i<=n; i++)
        printf("%d ", a[i]);
    return 0;
}