rendered paste body/* simple implementation of merge sort!!! */#include <stdio.h>#include <malloc.h>#define n_mas 5int 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 ;}