Cod sursa(job #2897362)

Utilizator simonatudoroiuTudoroiu Simona simonatudoroiu Data 3 mai 2022 15:26:41
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001];
void merge( int st, int dr, int mij)
{
    int array1[500001], array2[500001];
    for(int i=st;i<=mij;i++)
        array1[i] = v[i];
    for(int i=mij+1;i<=dr;i++)
        array2[i] = v[i];
    int index1 = st;
    int index2 =mij+1;
    int max1 = mij + 1, max2 = dr +1, index = st;
    while(index1 < max1 && index2 < max2)
    {
        if(array1[index1] <= array2[index2])
        {
            v[index] = array1[index1];
            index1++;
        }
        else
        {
            v[index] = array2[index2];
            index2++;
        }
        index++;
    }
    while(index1 < max1)
    {
        v[index] = array1[index1];
        index1++;
        index++;
    }
    while(index2 < max2)
    {
        v[index] = array2[index2];
        index2++;
        index++;
    }

}

void mergesort( int st, int dr)
{

    if(st>=dr)
    {
        return;
    }
    int mij = (dr+st)/2;
    mergesort(st,mij);
    mergesort(mij+1,dr);
    merge(st,dr,mij);
}
int main()
{
    long n, i;
    fin>>n;
    for(i=0;i<n;i++)
    {
        fin>>v[i];
    }
    mergesort(0,n-1);
    for(i=0;i<n;i++)
        fout<<v[i]<<" ";
}