Cod sursa(job #1091865)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 26 ianuarie 2014 09:25:47
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<cstdio>

using namespace std;

const int NMAX = 500005;

int N;
int V[NMAX];
int A[NMAX];

void MergeSort(int L,int R)
{
    if(L == R) return;

    // Divide...
    int M=(L+R)/2;
    MergeSort(L,M);
    MergeSort(M+1,R);

    // ...and conquer!
    int i,j,k;
    for(i=L; i<=R; i++)
        A[i]=V[i];
    for(i=L,j=M+1,k=i; i<=M && j<=R; k++)
    {
        if(A[i]<=A[j]) {V[k]=A[i]; i++;}
        else {V[k]=A[j]; j++;}
    }
    for(; i<=M; i++,k++)
        V[k]=A[i];
    for(; j<=R; j++,k++)
        V[k]=A[j];
}

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

    scanf("%d",&N);
    for(i=1; i<=N; i++)
        scanf("%d",&V[i]);
    MergeSort(1,N);
    for(i=1; i<=N; i++)
        printf("%d ",V[i]);
    return 0;
}