Cod sursa(job #791100)

Utilizator ioana.teocIoana Teoc ioana.teoc Data 22 septembrie 2012 21:50:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
//
//  main.cpp
//  Merge Sort
//
//  Created by Ioana Teoc on 9/22/12.
//  Copyright (c) 2012 Ioana Teoc. All rights reserved.
//

#include <iostream>
#include <stdio.h>

# define NMAX 500005

unsigned int V[NMAX], n,B[NMAX] ;


void mergeSort(int l, int r){
    if(l == r) return;
    int m;
    m = (l + r) / 2;
    mergeSort(l, m);
    mergeSort(m+1, r);
    for(int i = l, j = m+1, k = 0; i <= m || j <= r; k++){
        if((i <= m && V[i] <= V[j]) || j > r)
            B[k] = V[i++];
        else
            B[k] = V[j++];
    }
    for(int i = l; i <= r; i++)
        V[i] = B[i-l];
}


int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    
    scanf("%d", &n);
    for(int i = 0; i < n; i++){
        scanf("%d", &V[i]);
    }
    mergeSort(0, n-1);
    for(int i = 0; i < n; i++){
        printf("%d ", V[i]);
    }

}