Q:

C program to merge two arrays

0

C program to merge two arrays

 

C program to merge two arrays into another array. They are assumed to be sorted in ascending order. A user inputs them; the program combines them to get a larger array. If they aren't in ascending order, we can sort them and then use the merge function. Another method is to merge them first and then sort it. Sorting them first takes less time as compared to sorting a large array. Merging two sorted lists is used in the merge sort algorithm.

All Answers

need an explanation for this answer? contact us directly to get an explanation for this answer

// It is assumed a user will enter arrays in ascending order
#include <stdio.h>
void merge(int [], int, int [], int, int []);

int main() {
  int a[100], b[100], m, n, c, sorted[200];

  printf("Input number of elements in first array\n");
  scanf("%d", &m);

  printf("Input %d integers\n", m);
  for (c = 0; c < m; c++) {
    scanf("%d", &a[c]);
  }

  printf("Input number of elements in second array\n");
  scanf("%d", &n);

  printf("Input %d integers\n", n);
  for (c = 0; c < n; c++) {
    scanf("%d", &b[c]);
  }

  merge(a, m, b, n, sorted);

  printf("Sorted array:\n");

  for (c = 0; c < m + n; c++) {
    printf("%d\n", sorted[c]);
  }

  return 0;
}

void merge(int a[], int m, int b[], int n, int sorted[]) {
  int i, j, k;

  j = k = 0;

  for (i = 0; i < m + n;) {
    if (j < m && k < n) {
      if (a[j] < b[k]) {
        sorted[i] = a[j];
        j++;
      }
      else {
        sorted[i] = b[k];
        k++;
      }
      i++;
    }
    else if (j == m) {
      for (; i < m + n;) {
        sorted[i] = b[k];
        k++;
        i++;
      }
    }
    else {
      for (; i < m + n;) {
        sorted[i] = a[j];
        j++;
        i++;
      }
    }
  }
}

outputs:

Input number of elements in first array

2

Input 2 integers

1

2

Input number of elements in second array

2

Input 2 integers

1

2

Sorted array:

1

1

2

2

need an explanation for this answer? contact us directly to get an explanation for this answer

total answers (1)

Similar questions


need a help?


find thousands of online teachers now