Cod sursa(job #3211144)

Utilizator Dobricean_IoanDobricean Ionut Dobricean_Ioan Data 8 martie 2024 16:43:16
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n , v[100005], aux[100005];


void merge_sort(int st, int dr) {
    if (st < dr) {
		
        int m = (st + dr) / 2;
        
        merge_sort(st , m);
        merge_sort(m + 1 , dr);
        
        int i = st, j = m + 1, k = 0;

        while (i <= m && j <= dr)
            if (v[i] < v[j]) 
				aux[++k] = v[i++];
            else 
				aux[++k] = v[j++];
           
        while (i <= m) 
			aux[++k] = v[i++];
        while (j <= dr) 
			aux[++k] = v[j++];
        
        for (i = st, j = 1; i <= dr; i++, j++) 
			v[i] = aux[j];
    }
}

int main() {
    fin >> n;
    for (int i = 0; i < n; i++) 
		fin >> v[i];
    merge_sort(0, n - 1);

    for (int i = 0; i < n; i++) 
		fout << v[i] << " ";
    return 0;
}