/* Merge two sorted arrays */
#include <stdio.h>
#include <stdlib.h>

int *merge(int a[], int la, int b[], int lb);

void print(int a[], int la);

int main(){
    int x[6] = { 1, 2, 4, 7, 12, 20 };
    int y[8] = { 2, 3, 6, 14, 15, 16, 18, 22 };
    int *r=NULL;

    print(x, 6);
    print(y, 8);

    r=merge(x, 6, y, 8);

    print(r, 6+8);
    return 0;
}

void print(int a[], int la){
    int i;
    for(i=0; i<la-1; i++)
        printf("%d, ", a[i]);
    printf("%d\n", a[la-1]);
}

int *merge(int a[], int la, int b[], int lb){
    int i=0, j=0, k=0;
    int *r=malloc(sizeof(int)*(la+lb));
    while(i<la && j<lb) {
        if(a[i]<=b[j]) {
            r[k]=a[i];
            i++;
        } else {
            r[k]=b[j];
            j++;
        }
        k++;
    }
    if (i<la)
        for( ; i<la; i++,k++)
            r[k]=a[i];
    if (j<lb)
        for( ; j<lb; j++,k++)
            r[k]=b[j];
    return r;
}

