rendered paste body#include <stdio.h>
#include <malloc.h>
#define n_mas 5
int sort(int *x,int n)
{
int i=0, j=0; int tmp;
for (i=0; i < n-1; i++)
for (j=i+1; j< n; j++)
if (x[j] > x[i])
{
tmp = x[i];
x[i] = x[j];
x[j] = tmp;
}
return 0;
}
int * merge_sort(int *v, int n1, int *p, int n2)
{
int k=0;
int *ptr = (int *) malloc((n1+n2) * sizeof(int));
int i=0, j=0;
for (k=0; k < (n1 + n2); k++)
{
if (i >= n1) {ptr[k] = p[j]; j++;}
else if (j >= n2) {ptr[k] = v[i]; i++;}
else
if (v[i] > p[j]) {ptr[k] = v[i]; i++;}
else {ptr[k] = p[j]; j++;}
}
return ptr;
}
int copy_mas(int *v, int *p, int s, int k)
{
int i=0;
for (i=0; i < k; i++)
p[i] = v[i+s];
return 0 ;
}
int main()
{
int m[n_mas]={5,2,1,8,3};
int j = n_mas / 2;
int *ptr1, *ptr2;
ptr1 = (int *) malloc ( j * sizeof(int));
ptr2 = (int *) malloc ( (n_mas - j) * sizeof(int));
int *p;
copy_mas(m,ptr1,0, j); copy_mas(m,ptr2,j,n_mas-1);
sort(ptr1, j); sort(ptr2, n_mas-j);
p = merge_sort(ptr1,j,ptr2,n_mas-j);
int i=0;
for (i=0; i < n_mas; i++)
printf("%d", p[i]);
free(ptr1); free(ptr2);
getchar();
return 0 ;
}