How to merge two arrays having different values into one array in C

2 Answers

0 votes
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arr1[] = { 1, 2, 5, 7 };
    int arr2[] = { 3, 4, 6 };
    
    size_t sizeA = sizeof(arr1) / sizeof(arr1[0]);
    size_t sizeB = sizeof(arr2) / sizeof(arr2[0]);
    size_t sizeC = sizeA + sizeB;
    
    int* arr3 = malloc(sizeof(int) * sizeC);

    int i = 0, j = 0, k = 0;

    while (i < sizeA && j < sizeB) {
        if (arr1[i] <= arr2[j])
            arr3[k++] = arr1[i++];
        else
            arr3[k++] = arr2[j++];
    }

    while (i < sizeA) {
        arr3[k++] = arr1[i++];
    }
    while (j < sizeB) {
        arr3[k++] = arr2[j++];
    }

    for (i = 0; i < sizeC; i++) {
        printf("%2d", arr3[i]);
    }

    free(arr3);

    return 0;
}




/*
run:

 1 2 3 4 5 6 7

*/

 



answered May 23, 2024 by avibootz
0 votes
#include <stdio.h>
#include <stdlib.h>

int* merge_two_arrays(int arr1[], int arr2[], size_t size1, size_t size2) {
    size_t size3 = size1 + size2;
    
    int* arr3 = malloc(sizeof(int) * size3);

    int i = 0, j = 0, k = 0;

    while (i < size1 && j < size2) {
        if (arr1[i] <= arr2[j])
            arr3[k++] = arr1[i++];
        else
            arr3[k++] = arr2[j++];
    }

    while (i < size1) {
        arr3[k++] = arr1[i++];
    }
    while (j < size2) {
        arr3[k++] = arr2[j++];
    }

    return arr3;
}

int main()
{
    int arr1[] = { 1, 2, 5, 7 };
    int arr2[] = { 3, 4, 6 };
    
    size_t size1 = sizeof(arr1) / sizeof(arr1[0]);
    size_t size2 = sizeof(arr2) / sizeof(arr2[0]);
    

    int* arr3 = merge_two_arrays(arr1, arr2, size1, size2);
        
    for (int i = 0; i < size1 + size2; i++) {
         printf("%2d", arr3[i]);
    }

    free(arr3);

    return 0;
}




/*
run:

 1 2 3 4 5 6 7

*/

 



answered May 23, 2024 by avibootz

Related questions

...