Pagini recente » Cod sursa (job #1091448) | Cod sursa (job #1904551) | Cod sursa (job #1943705) | Cod sursa (job #451213) | Cod sursa (job #1011612)
#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;
}