Cod sursa(job #974453)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 17 iulie 2013 11:49:18
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream>
#include<math.h>
#include<fstream>
#include<string.h>
#include<stdio.h>
#include<assert.h>
using namespace std;
int n,v[100];
void citire()
{
	int i;
	freopen("algsort.in", "r", stdin);
	scanf("%d\n", &n);
	for(i=1; i<=n; i++)
		scanf("%d\n", &v[i]);
}
void afisare()
{
	freopen("algsort.out", "w", stdout);
	for(int i=1; i<=n; i++)
		printf("%d ", v[i]); 
}
void merge_sort(int li, int ls)
{
	if(li < ls)
	{
		int m = (li + ls) / 2;
		merge_sort(li, m);
		merge_sort(m+1, ls);
		int i = li, j = m+1,rez[100], k = 1;
		while(i <= m && j <= ls)
		{
			if(v[i] < v[j])
				rez[k++] = v[i++];
			else
				rez[k++] = v[j++];
		}
		while(i <= m)
			rez[k++] = v[i++];
		while(j <= ls)
			rez[k++] = v[j++];
		k = 1;
		for(i=li; i<=ls; i++)
			v[i] = rez[k++];
	}
}
int main()
{
	citire();
	merge_sort(1,n);
	afisare();
	return 0;
}