Cod sursa(job #1011612)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 17 octombrie 2013 00:19:08
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#define NMax 500000
#define NSum 1000000+1
#include <time.h>
using namespace std;
void mergeSort(int li, int ls, int *v)
{
	if (li < ls)
	{
		int m = (li + ls) / 2;
		mergeSort(li, m, v);
		mergeSort(m+1, ls, v);
		int k = 0, *a = new int[ls+1], i = li, j = m+1;
		while (i <= m && j <= ls)
		{
			if (v[i] > v[j])
				a[k++] = v[j++];
			else
				a[k++] = v[i++];
		}
		while (i <= m)
			a[k++] = v[i++];
		while (j <= ls)
			a[k++] = v[j++];
		for (int i=li; i <= ls; i++)
			v[i] = a[i-li];
	}
}
int main()
{
	int n, *v;
	FILE *f = fopen("algsort.in", "r");
	FILE *g = fopen("algsort.out", "w");
	fscanf(f, "%d", &n);
	v = new int[n];
	for (int i=0; i<n; i++)
		fscanf(f, "%d", &v[i]);
	mergeSort(0, n-1, v);
	for (int i = 0; i<n; i++)
		fprintf(g, "%d ", v[i]);
	fclose(f);
	fclose(g);
	return 0;
}