Cod sursa(job #2439526)

Utilizator qfl1ck32Andrei qfl1ck32 Data 16 iulie 2019 10:51:24
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void sortare(int *v, int s, int m, int d)
{
    int temp[d-s+1], i = s, j = m + 1, k = 0;
    while (i <= m && j <= d)
    {
        if (v[i] <= v[j])
        {
            temp[k] = v[i];
            k++;
            i++;
        }
        else
        {
            temp[k] = v[j];
            k++;
            j++;
        }
    }
    while (i <= m)
    {
        temp[k] = v[i];
        k++;
        i++;
    }
    while (j <= d)
    {
        temp[k] = v[j];
        k++;
        j++;
    }
    for (i = s; i <= d; i++)
        v[i] = temp[i-s];
}

void divetimp(int *v, int s, int d)
{
    if (s < d)
    {
        int m = (s+d)/2;
        divetimp(v, s, m);
        divetimp(v, m+1, d);
        sortare(v, s, m, d);
    }
}

int main()
{
    int n, v[500001], i;
    fin>>n;
    for (i = 1; i <= n; i++)
        fin>>v[i];
    divetimp(v, 1, n);
    for (i = 1; i <= n; i++)
        fout<<v[i]<<" ";
}