# Merge 3 arrays in sorted order in C++

In this tutorial, we will learn how to merge 3 arrays in sorted order in C++. Below is an interesting solution based on min-heap implemented by using a priority queue. For example-

Input:

3
-1 35 45
4
7 8 9 0
5
-23 -87 4 5 3

Output:

-87 -23 -1 0 3 4 5 7 8 9 35 45

## How to merge 3 arrays in sorted order in C++

Basically, we will use a min-heap in our code. Heaps are a complete binary tree. In min-heap, the data present at the parent is less than it’s children node.

Push the elements of all the three arrays one by one in a min-heap. It gets stored in a tree-like this below: We start printing from the top of min-heap and they get printed in sorted order.

Here, is the code implementation:

```#include<bits/stdc++.h>
using namespace std;
int main()
{
int n1;
cin>>n1;

int a,b,c;

for(int i=0;i<n1;i++)
{
cin>>a[i];
}
int n2;
cin>>n2;

for(int i=0;i<n2;i++)
{
cin>>b[i];
}

int n3;
cin>>n3;

for(int i=0;i<n3;i++)
{
cin>>c[i];
}

priority_queue<int,vector<int>,greater<int> > pq;

for(int i=0;i<n1;i++)
{
pq.push(a[i]);
}

for(int i=0;i<n2;i++)
{
pq.push(b[i]);
}

for(int i=0;i<n3;i++)
{
pq.push(c[i]);
}

while(pq.empty()==false)
{
cout<<pq.top()<<" ";
pq.pop();
}

}
```

Here the Input is:

3
-1 35 45
4
7 8 9 0
5
-23 -87 4 5 3

And the Output is:

`-87 -23 -1 0 3 4 5 7 8 9 35 45`

Also, refer to:

Count the number of occurrences of an element in a linked list in C++

Time complexity: It will be o(m+n+k) where m,n, and k are sizes of the array as the arrays are only traversed once.