Cod sursa(job #2281736)

Utilizator dragos99Homner Dragos dragos99 Data 12 noiembrie 2018 18:07:36
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include<fstream>
using namespace std;
    ifstream f("algsort.in");
    ofstream g("algsort.out");

int n;

void afisare(int a[], int size_array){
    for(int i = 0 ; i < size_array ; i++){
        g<<a[i]<< " ";
    }
    g<<'\n';
}

void merge_function(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;
    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;
    int 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++];
    //afisare(a, n);
}

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);

        merge_function(a, low, mid, high);
    }
}


int main(){

f>>n;
int a[n];
for(int i = 0 ; i < n ; i++)
    f>>a[i];

mergesort(a, 0, n-1);
afisare(a, n);

return 0;
}