Cod sursa(job #2404694)

Utilizator Dragos101Baciu Dragos Dragos101 Data 13 aprilie 2019 11:58:38
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;

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

int a[500001], b[500001];

void Interclasare(int st,int mij,int dr)
{
    int k, i, j;
    i = st;
    j = mij + 1;
    k = st - 1;
    while(i <= mij && j <= dr)
    {
        if(a[i] < a[j]) b[++k] = a[i++];
        else b[++k] = a[j++];
    }
    while(i <= mij)
        b[++k] = a[i++];
    while(j <= dr)
        b[++k] = a[j++];
    for(i = st; i <= dr; i++)
        a[i] = b[i];
}
void Mergesort(int st,int dr)
{
    if(st<dr)
    {
        int mij=(st+dr)/2;
        Mergesort(st,mij);
        Mergesort(mij+1,dr);
        Interclasare(st,mij,dr);
    }
}
int main()
{
    int n,i;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    Mergesort(1,n);
    for(i = 1;  i<= n; i++)
        fout << a[i] << " ";
    return 0;
}