Cod sursa(job #1894594)

Utilizator pufstarDragos Gheorghiu pufstar Data 26 februarie 2017 23:17:31
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int A[50], n;

void merge_sort(int A[], int left, int right) {
    if(right == left) return;
    else {
        int mid = (left + right) / 2;
        merge_sort(A, left, mid);
        merge_sort(A, mid + 1, right);
        int i = left, j = mid + 1;
        int n = mid, m = right;
        int C[50], k = 0;
        while(i <= n and j <= m) {
            if(A[i] <= A[j]) {
                C[++k] = A[i++];
            }
            else C[++k] = A[j++];
        }
        while(i <= n) C[++k] = A[i++];
        while(j <= m) C[++k] = A[j++];
        k = 1;
        for(int i = left; i <= right; i++) A[i] = C[k++];
    }
}

int main()
{
    f >> n;
    for(int i = 1; i <= n; i ++) f >> A[i];
    merge_sort(A, 1, n);
    for(int i = 1; i <= n; i ++)
        g << A[i] << ' ';
    return 0;
}