/* 
 * Funcao que resolve uma variante do problema 5.9
 * Esta funcao intercala os vetores ordenados a[] e b[] e
 * coloca o resultado em c[]
 */

/*
 * This code is from "Algorithms in C, Third Edition,"
 * by Robert Sedgewick, Addison Wesley Longman, 1998
 * (com pequenas modificacoes)
 */

void merge(int c[], int a[], int N, int b[], int M )
  { int i, j, k;
    for (i = 0, j = 0, k = 0; k < N+M; k++)
      {
        if (i == N) { c[k] = b[j++]; continue; }
        if (j == M) { c[k] = a[i++]; continue; }
        c[k] = (a[i] < b[j]) ? a[i++] : b[j++];
      }
  }
