Example: If elements of array A = 1, 4, 6, 9, 15
Elements of array B = 2, 5, 8, 10
Merged array in ascending order = 1, 2, 4, 5, 6, 8, 9, 10, 15
Required knowledge
Basic C programming, If else, For loop, ArrayProgram to merge two sorted array in ascending order
/**
 * C program to merge two sorted array in ascending order
 */
#include <stdio.h>
#define MAX_SIZE 100 //Maximum size of the array
int main()
{
    int arr1[MAX_SIZE], arr2[MAX_SIZE], arr3[MAX_SIZE];
    int size1, size2, size3;
    int i, j, k;
     
    /*
     * Read size of first array and elements in first array
     */
    printf("Enter the size of first array : ");
    scanf("%d", &size1);
    printf("Enter elements in first array : ");
    for(i=0; i<size1; i++)
    {
        scanf("%d", &arr1[i]);
    }
     
    /*
     * Reads size of second array and elements in second array
     */
    printf("\nEnter the size of second array : ");
    scanf("%d", &size2);
    printf("Enter elements in second array : ");
    for(i=0; i<size2; i++)
    {
        scanf("%d", &arr2[i]);
    }
    /* size of merged array is size_of_first_array + size_of_second_array */
    size3 = size1 + size2;
     
    /*
     * Merge two array in ascending order 
     */
    for(i=0, j=0, k=0; i<size3; i++)
    {
        /* 
         * If all elements of one array 
         * is merged to final array
         */
        if(j >= size1 || k >= size2)
        {
            break;
        }
        if(arr1[j] < arr2[k])
        {
            arr3[i] = arr1[j];
            j++;
        }
        else
        {
            arr3[i] = arr2[k];
            k++;
        }
    }
    /*
     * Merge the remaining elements of array
     */
    while(j < size1)
    {
        arr3[i] = arr1[j];
        i++;
        j++;
    }
    while(k < size2)
    {
        arr3[i] = arr2[k];
        i++;
        k++;
    }
    /* 
     * Prints the merged array
     */
    printf("\nArray merged in ascending order : ");
    for(i=0; i<size3; i++)
    {
        printf("%d\t", arr3[i]);
    }
    return 0;
} 
Output
Enter the size of first array : 5 
Enter elements in first array : 1 4 6 9 15
 
Enter the size of second array : 4
Enter elements in second array : 2 5 8 10
 
Array merged in ascending order : 1 2 4 5 6 8 9 10 15
Enter elements in first array : 1 4 6 9 15
Enter the size of second array : 4
Enter elements in second array : 2 5 8 10
Array merged in ascending order : 1 2 4 5 6 8 9 10 15
Program to merge two sorted array in descending order
/**
 * C program to merge two sorted array in descending order
 */
#include <stdio.h>
#define MAX_SIZE 100 //Maximum size of the array
int main()
{
    int arr1[100], arr2[100], arr3[200];
    int size1, size2, size3;
    int i, j, k;
    /*
     * Reads size of first array and element in first array
     */
    printf("Enter the size of first array : ");
    scanf("%d", &size1);
    printf("Enter elements in first array : ");
    for(i=0; i<size1; i++)
    {
        scanf("%d", &arr1[i]);
    }
    /*
     * Read size of second array and elements in second array
     */
    printf("\nEnter the size of second array : ");
    scanf("%d", &size2);
    printf("Enter elements in second array : ");
    for(i=0; i<size2; i++)
    {
        scanf("%d", &arr2[i]);
    }
    /* size of merged array is size_of_first_array + size_of_second_array */
    size3 = size1 + size2;
    /*
     * Merges both array in descending order
     */
    for(i=0, j=0, k=0; i<size3; i++)
    {
        /* 
         * If all elements of one array 
         * is merged to final array
         */ 
        if(j >= size1 || k >= size2)
        {
            break;
        }
        if(arr1[j] > arr2[k])
        {
            arr3[i] = arr1[j];
            j++;
        }
        else
        {
            arr3[i] = arr2[k];
            k++;
        }
    }
    /*
     * Merge the remaining elements of array
     */
    while(j < size1)
    {
        arr3[i] = arr1[j];
        i++;
        j++;
    }
    while(k < size2)
    {
        arr3[i] = arr2[k];
        i++;
        k++;
    }
    /*
     * Prints the merged array
     */
    printf("\nArray merged in descending order : ");
    for(i=0; i<size3; i++)
    {
        printf("%d\t", arr3[i]);
    }
    return 0;
} 
Output
Enter the size of first array : 5 
Enter elements in first array : 15 9 6 4 1
Enter the size of second array : 4
Enter elements in second array : 10 8 5 2
Array merged in descending order : 15 10 9 8 6 5 4 2 1
Enter elements in first array : 15 9 6 4 1
Enter the size of second array : 4
Enter elements in second array : 10 8 5 2
Array merged in descending order : 15 10 9 8 6 5 4 2 1
Note: In order to merge array in ascending or descending order array elements of both array must be sorted in ascending or descending order.
Happy coding ;)
You may also like
- Array and Matrix programming exercises index.
- C program to copy all elements of an array to another array.
- C program to find maximum and minimum element in an array.
- C program to insert an element in array.
- C program to delete an element from array at given position.
- C program to delete all duplicate elements from an array.
- C program to find all unique elements in an array.
- C program to count frequency of each elements in array.
- C program to sort elements of array in ascending order.
- C program to find lower triangular matrix.
- C program to find transpose of a matrix.