Cod sursa(job #1279402)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 30 noiembrie 2014 12:03:07
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
using namespace std;
int n, i;
int v[500001], w[500001];
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void interclasare(int p, int mid, int u){
	int i = p, j = mid + 1, k = 0;
	while(i <= mid && j <= u){
		if(v[i] < v[j]){
			k++;
			w[p+k-1] = v[i];
			i++;
		}
		else{
			k++;
			w[p+k-1] = v[j];
			j++;
		}
	}
	for(; i <= mid; i++){
		k++;
		w[p+k-1] = v[i];
	}
	for(; j <= u; j++){
		k++;
		w[p+k-1] = v[j];
	}
	for(i = p; i <= u; i++){
		v[i] = w[i];
	}
}
void sortare(int p, int u){
	if(p != u){
		int mid = (p + u) / 2;
		sortare(p, mid);
		sortare(mid + 1, u);
		interclasare(p, mid, u);
	}
}
int main(){
	fin>> n;
	for(i = 1; i <= n; i++){
		fin>> v[i];
	}
	sortare(1, n);
	for(i = 1; i <= n; i++){
		fout<< v[i] <<" ";
	}
	return 0;
}