Pagini recente » Cod sursa (job #2477696) | Cod sursa (job #923084) | Cod sursa (job #10934) | Cod sursa (job #2643535) | Cod sursa (job #1239021)
#include <stdio.h>
#include <stdlib.h>
using namespace std;
FILE *fin;
FILE *fout;
void merg(int *v, int l, int mid, int r)
{
int i, j, c[100], k, x;
i = l;
j = mid + 1;
x = l;
while(i <= mid && j <= r)
{
if(v[i] < v[j])
{
c[x] = v[i];
++i;
}
else
{
c[x] = v[j];
++j;
}
++x;
}
while(i <= mid)
{
c[x] = v[i];
++i;
++x;
}
while(j <= r)
{
c[x] = v[j];
++j;
++x;
}
for(k = l; k <= r; k++)
v[k] = c[k];
}
void mergesort(int *v, int l, int r)
{
if (l < r)
{
int mid = (l + r) / 2;
mergesort(v, l, mid);
mergesort(v, mid + 1, r);
merg(v, l, mid, r);
}
}
int main()
{
fin = fopen("algsort.in", "r");
fout = fopen("algsort.out", "w");
int v[100], n, i;
fscanf(fin, "%d", &n);
for(i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
mergesort(v, 0, n - 1);
for (i = 0; i < n; i++)
{
fprintf(fout, "%d ", v[i]);
}
fclose(fin);
fclose(fout);
return 0;
}