Pagini recente » Cod sursa (job #1979512) | Cod sursa (job #944139) | Cod sursa (job #2391076) | Cod sursa (job #981858) | Cod sursa (job #1011620)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#define NMax 1000+1
#define NSum 1000000+1
#include <time.h>
using namespace std;
void mergeSort(unsigned li, unsigned ls, unsigned *v)
{
if (li < ls)
{
unsigned m = (li + ls) / 2;
mergeSort(li, m, v);
mergeSort(m+1, ls, v);
unsigned k = 0, i = li, j = m+1;
unsigned *a = new unsigned[ls + 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()
{
unsigned n; unsigned *v;
FILE *f = fopen("algsort.in", "r");
FILE *g = fopen("algsort.out", "w");
fscanf(f, "%d", &n);
v = new unsigned[n+1];
for (unsigned i=0; i<n; i++)
fscanf(f, "%d", &v[i]);
mergeSort(0, n-1, v);
for (unsigned i = 0; i<n; i++)
fprintf(g, "%d ", v[i]);
delete v;
fclose(f);
fclose(g);
return 0;
}