Cod sursa(job #1766268)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 27 septembrie 2016 19:38:51
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");

int N, A[1000];

void interclasare(int, int, int);

void mergeSort(int p, int q)
{
    if(q>p)
    {
        int m=(q+p)/2;
        mergeSort(p, m);
        mergeSort(m+1, q);
        interclasare(p, m, q);
    }
}

void interclasare(int p, int m, int q)
{
    int i=p, j=m+1, k=0;
    int B[1000];
    while(i<=m and j<=q)
    {
        if(A[i]<A[j]) B[k++]=A[i++];
        else B[k++]=A[j++];
    }
    while(i<=m)
        B[k++]=A[i++];
    while(j<=q)
        B[k++]=A[j++];
    for(i=p; i<=q; ++i)
        A[i]=B[i-p];
}

int main()
{
    in>>N;
    for(int i=0; i<N; ++i)
    {
        in>>A[i];
    }
    mergeSort(0, N-1);
    for(int i=0; i<N; ++i)
    {
        out<<A[i]<<" ";
    }
    in.close();
    out.close();
    return 0;
}