Posted By:
21 Jun, 2013 9:13 am PDT

Arrays in C

How to merge two sorted arrays which are in ascending order?
Attachment:None


This is a C program to merge two arrays into third array. Arrays are assumed to be sorted in ascending order. You enter two short sorted arrays and combine them to get a large array. The code for merging two arrays is

#include <stdio.h>

#include<conio.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]);

    }

   

    getch();

}

 

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++;

        }

        elseif (j == m)

        {

            for (; i < m + n;)

            {

                sorted[i] = b[k];

                k++;

                i++;

            }

        }

        else

        {

            for (; i < m + n;)

            {

                sorted[i] = a[j];

                j++;

                i++;

            }

        }

    }

}

Please see the video for more details
Was it useful?  




Please login to reply to this problem.



Related Problems on Fixoncloud