Cod sursa(job #2544748)

Utilizator sternvladStern Vlad sternvlad Data 12 februarie 2020 14:37:50
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include<iostream>
#include <fstream>

using namespace std;

int a[500001], n;

void interclass (int i, int m, int j) {
	int b[500001];
	int x = i;
	int k = 1;
	int y = m+1;

	while (x<=m && y<=j) {
		if (a[x]<a[y]){
			b[k++] = a[x++];
		}else {
			b[k++] = a[y++];
		}
	}

	while (x<=m){
		b[k++] = a[x++];
	}

	while (y<=j){
		b[k++] = a[y++];
	}
	int t = i;
	for (k = 1; k<=(j-i)+1; k++){
		a[t++] = b[k];
	}
}


void merge (int left, int right) {
	if (left == right) {
		return;
	}
	int mid = (left + right) / 2;
	merge (left, mid);
	merge (mid + 1, right);
	interclass (left, mid, right);
}

int main()
{
	int i;
    ifstream in ("algsort.in");
    in>>n;
    for(int i=1;i<=n;i++)
          in>>a[i];
    merge(1,n);
    ofstream out ("algsort.out");
    for(i=1;i<=n;i++)
        out<<a[i]<<" ";
    return 0;
}