Cod sursa(job #3326904)

Utilizator zionlyismAdobroaiei David zionlyism Data 1 decembrie 2025 10:50:53
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

#define NMAX 100002

using namespace std;

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

int n;
int a[NMAX];
int b[NMAX];

void msort(int st, int dr); //parametrii indica de unde pana unde sortez
void interclasare(int st, int dr);

int main()
{
    int i;
    fin>>n;
    for(i = 1; i <=n; i++)
        fin>>a[i];
    msort(1, n);
    for(i = 1; i <= n; i++)
        fout<<a[i]<<' ';
    fout<<'\n';
    return 0;
}

void msort(int st, int dr)
{
 if(st < dr) //cel putin doua elemente
    {
     int mij = (st + dr) / 2;
     msort(st, mij);
     msort(mij + 1, dr);
     interclasare(st,dr);
    }
}

void interclasare(int st, int dr)
{
 int mij = (st + dr) / 2;
 int i = st;
 int j = mij + 1;
 int k = st;
 while (i <= mij && j <= dr)
    {
     if (a[i] > a[j])
        b[k++] = a[j++];
        else
        b[k++] = a[i++];
    }
 while(i <= mij) b[k++] = a[i++];
 while(j <= dr) b[k++] = a[j++];
 for (i = st; i <= dr; i++)
    a[i] = b[i];
}