Cod sursa(job #2540005)

Utilizator NoodlesAndi Domnulete Noodles Data 6 februarie 2020 17:13:52
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f1("algsort.in");
ofstream f2("algsort.out");

int a[500001];
int N, i;

void merg(int a[], int lb, int mid, int ub){
    int i, j, k;
    i = lb;
    k = lb;
    j = mid + 1;
    int b[500001];

    while(i <= mid && j <= ub){
        if(a[i] < a[j]){
            b[k] = a[i];
            k++;
            i++;
        }
        else{
            b[k] = a[j];
            k++;
            j++;
        }
    }

    while(i <= mid){
        b[k] = a[i];
        k++;
        i++;
    }
    while(j <= ub){
        b[k] = a[j];
        k++;
        j++;
    }

    for(i = lb; i <= ub; i++){
        a[i] = b[i];
    }
}

void mergeSort(int a[], int lb, int ub){
    if(lb < ub){
        int mid = (lb + ub) / 2;
        mergeSort(a, lb, mid);
        mergeSort(a, mid + 1, ub);
        merg(a, lb, mid, ub);
    }
}



using namespace std;

int main()
{
    f1 >> N;
    for(i = 1; i <= N; i++){
        f1 >> a[i];
    }

    mergeSort(a, 1, N);

    for(i = 1; i <= N; i++){
        f2 << a[i] << " ";
    }

    return 0;
}