Cod sursa(job #2891727)

Utilizator Medianski[email protected] Medianski Data 19 aprilie 2022 17:34:25
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
//#include <iostream>
#include <math.h>
#include <fstream>
using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

int tmp[500001];

void MergeSort(int v[], int st, int dr) {
	if(st < dr) {
		int m = (st + dr) / 2;
		MergeSort(v, st, m);
		MergeSort(v, m+1, dr);

		//interclasare
		int i = st, j = m+1, k= 0;
		while(i <= m && j <= dr) {
			if(v[i] < v[j]) {
				tmp[++k] = v[i++];
			}
			else {
				tmp[++k] = v[j++];
			}
		}
		while(i <=m) {
			tmp[++k] = v[i++];
		}
		while(j <= dr) {
			tmp[++k] = v[j++];
		}

		for(i = st, j = 1; i<=dr;i++, j++) {
			v[i] = tmp[j];
		}
	}
}

int main() {
	int n, v[500001];
	cin >> n;
	for(int i = 1;i<=n;i++) {
		cin >> v[i];
	}
	MergeSort(v, 1, n);
	for(int i = 1;i<=n;i++) {
		cout << v[i] << " ";
	}
}