#include <stdio.h>
#define N 32
int merge(int startdes, int startsrc1, int startsrc2, int enddes, int endsrc1, int endsrc2, int a[N]) {
int b[N];
int c[N];
int i;
int j;
int n1, n2;
int k, l;
n1 = endsrc1 - startsrc1;
n2 = endsrc2 - startsrc2;
for (i = startsrc1, j = 0; i <= endsrc1; i++, j++)
b[j] = a[i];
for (i = startsrc2, j = 0; i <= endsrc2; i++, j++)
c[j] = a[i];
for(i = startdes, l = 0, k = 0; i < enddes; i++) {;
if((l < n1) && (k >= n2)) {
a[i] = b[l];
l++;
}
else if((l >= n1) && (k < n2)) {
a[i] = c[k];
k++;
}
else if(b[l] <= c[k]) {
a[i] = b[l];
l++;
}
else if(b[l] > c[k]) {
a[i] = c[k];
k++;
}
}
}
int main(void) {
int i;
int a[] = {1, 2, 3, 4, 1, 2, 3, 4, 5};
merge(0, 0, 4, 8, 3, 8, a);
printf("\n");
for(i = 0; i <= 8; i++)
printf("%i\n", a[i]);
return 0;
}