Cod sursa(job #2898338)

Utilizator mbrianaMerealbe Cris-Briana mbriana Data 6 mai 2022 16:43:44
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

int arr[500001];

void interclasare(int stg, int dr, int mij)
{
    int i, j, k, c[500001];
    i = stg;
    k = stg;
    j = mij + 1;
    while (i <= mij && j <= dr) {
        if (arr[i] < arr[j]) {
            c[k] = arr[i];
            k++;
            i++;
        }
        else  {
            c[k] = arr[j];
            k++;
            j++;
        }
    }
    while (i <= mij) {
        c[k] = arr[i];
        k++;
        i++;
    }
    while (j <= dr) {
        c[k] = arr[j];
        k++;
        j++;
    }
    for (i = stg; i < k; i++)  {
        arr[i] = c[i];
    }
}
void merge_sort(int stg, int dr)
{
    int mij;
    if (stg < dr){
        mij=(stg+dr)/2;
        merge_sort(stg,mij);
        merge_sort(mij+1,dr);
        interclasare(stg,dr,mij);
    }
}
int main()
{
    int nr;
    f>>nr;
    for (int i = 0; i < nr; i++)
    {
        f>>arr[i];
    }
    merge_sort(0, nr-1);
    for (int i = 0; i < nr; i++)
    {
        g<<arr[i]<<" ";
    }
    f.close();
    g.close();
    return 0;
}