Pagini recente » Cod sursa (job #1995303) | Cod sursa (job #1504772) | Cod sursa (job #2322419) | Cod sursa (job #1320830) | Cod sursa (job #1239016)
#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 = 0;
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 = 0; k < x; k++)
v[l + 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("vector.in", "r");
fout = fopen("vector.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;
}