Cod sursa(job #2850120)

Utilizator RalucaioneteRalucaIonete Ralucaionete Data 16 februarie 2022 11:54:29
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include<iostream>
#include<fstream>
using namespace std;

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

const int N=5e5;
int v[N], aux[N];
void interclasare(int v[N], int st, int dr);
void ms(int v[N], int st, int dr);
void ms(int v[N], int st, int dr)
{
    if(st==dr)return;
    int m=(st+dr)/2;
    ms(v, st, m);
    ms(v, m+1, dr);
    interclasare(v, st, dr);
}

void interclasare(int v[N], int st, int dr)
{
    int m=(st+dr)/2;
    int i=st, j=m+1, k=st, aux[N];
    while(i<=m && j<=dr)
    {
        if(v[i]<=v[j])
        {
            aux[k++]=v[i++];
        }
        else
            aux[k++]=v[j++];
    }
    while(i<=m)
        aux[k++]=v[i++];
    while(j<=dr)
        aux[k++]=v[j++];
    for(k=st; k<=dr; k++)
    {
        v[k]=aux[k];
    }
}

int main()
{
    int v[N], n;
    fin >> n;
    for(int i=0; i<=n-1; i++)
    {
        fin >> v[i];
    }
    ms(v, 0, n-1);
    for(int i=0; i<=n-1; i++)
        fout << v[i] << " ";
    return 0;
}