Cod sursa(job #1516208)

Utilizator MickeyTurcu Gabriel Mickey Data 2 noiembrie 2015 20:48:41
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
int i, n,p;
int v[500001];
int a[250000];
void interclasare(int i, int m, int j)
{
	
	int x = i;
	int k = 0;
	int y = m + 1;
	while((x<=m)&&(y<=j))
		if (v[x] < v[y])
		{
			
			a[++k] = v[x];
			x++;
			
        }
		else
		{
			
			a[++k] = v[y];
			y++;
			


		}
	if (y > j)
		for (p = x; p <= m; p++)
		{
			a[++k] = v[p];
			


		}
	if (x > m)
		for (p = y; p <= j; p++)
		{
			a[++k] = v[p];
			

		}
	for (p = 1; p <= k; p++)
		v[i+p-1] = a[p];
}
void divide(int i, int j)
{
	if (i < j) {
		int m = (i + j) / 2;
		divide(i, m);
		divide(m + 1, j);
		interclasare(i, m, j);
	            }


}


int main() {

	ifstream f("algsort.in");
	ofstream g("algsort.out");
	f >> n;
	for (i = 1; i <= n; i++)
		f >> v[i];




	divide(1, n);



	for (i = 1; i <= n; i++)
		g << v[i]<<' ';


	return 0;
}