How to merge two sorted arrays in C++

2 Answers

0 votes
#include <iostream>

#define LEN1 8
#define LEN2 6

void merge_arrays(int arr1[], int arr2[], int merge[]) {
    int totalSize = LEN1 + LEN2;
 
    int index1 = 0, index2 = 0, mergeIndex;
     
    for (mergeIndex = 0; mergeIndex < totalSize; mergeIndex++) {
        if (arr1[index1] < arr2[index2]) {
            merge[mergeIndex] = arr1[index1];
            index1++;
        }
        else {
            merge[mergeIndex] = arr2[index2];
            index2++;
        }
    }
 
    while(index1 < LEN1) {
        merge[mergeIndex] = arr1[index1];
        mergeIndex++;
        index1++;
    }
    while(index2 < LEN2) {
        merge[mergeIndex] = arr2[index2];
        mergeIndex++;
        index2++;
    }
}
    
int main()
{
    int arr1[LEN1] = {1, 3, 5, 6, 9, 10, 12, 13};
    int arr2[LEN2] = {1, 2, 4, 7, 8, 9};
    int merge[LEN1 + LEN2] = {0};
    int totalSize = LEN1 + LEN2;
     
    merge_arrays(arr1, arr2, merge);
    
    for (int i = 0; i < totalSize; i++) {
        std::cout << merge[i] << " ";
    }
}

    
    
    
/*
run:
    
1 1 2 3 4 5 6 7 8 9 9 10 12 13 
   
*/

 



answered May 28, 2023 by avibootz
0 votes
#include <iostream>
#include <vector>

void mergeArrays(const int arr1[], int size1, const int arr2[], int size2, std::vector<int>& result) {
    int i = 0, j = 0;

    // Traverse both arrays
    while (i < size1 && j < size2) {
        if (arr1[i] < arr2[j])
            result.push_back(arr1[i++]);
        else
            result.push_back(arr2[j++]);
    }

    // Copy remaining elements of arr1
    while (i < size1)
        result.push_back(arr1[i++]);

    // Copy remaining elements of arr2
    while (j < size2)
        result.push_back(arr2[j++]);
}

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

    std::vector<int> merged;

    mergeArrays(arr1, size1, arr2, size2, merged);

    std::cout << "Merged array: ";
    for (int num : merged)
        std::cout << num << " ";
}



/*
run:

Merged array: 1 1 2 3 4 5 6 7 8 9 9 9 10 12 13 

*/

 



answered Nov 29, 2025 by avibootz
...