Cod sursa(job #2354670)

Utilizator al3xionescuIonescu Alexandru al3xionescu Data 25 februarie 2019 14:49:55
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
void mergeUtil(int a[], int low, int mid, int high) {
    int len1 = mid - low + 1;
    int len2 = high - mid;
    int L[len1], R[len2];
    int i, j, k;
    for (i = 0; i < len1; i++) {
        L[i] = a[low + i];
    }
    for (i = 0; i < len2; i++) {
        R[i] = a[mid + i + 1];
    }
    i = j = 0;
    k = low;
    while (i < len1 && j < len2) {
        if (L[i] < R[j]) {
            a[k++] = L[i++];
        }
        else {
            a[k++] = R[j++];
        }
    }
    while(i < len1) {
        a[k++] = L[i++];
    }
    while (j < len2) {
        a[k++] = R[j++];
    }
} 
void mergesort(int a[], int low, int high) {
    int mid = low + (high - low) / 2;
    if (low < high) {
        mergesort(a, low, mid);
        mergesort(a, mid + 1, high);
        mergeUtil(a, low, mid, high);
    }
}
int main() { 
    fin >> n;
    int a[n];
    for (int i = 0; i < n; i++) {
        fin >> a[i];
    }
    mergesort(a, 0, n - 1);
    for (int i = 0; i < n; i++) {
        fout << a[i] << ' ';
    }
    return 0;
}