Given two sorted arrays, find their union and intersection.

**Example:**

Input : arr1[] = {1, 3, 4, 5, 7} arr2[] = {2, 3, 5, 6} Output : Union : {1, 2, 3, 4, 5, 6, 7} Intersection : {3, 5} Input : arr1[] = {2, 5, 6} arr2[] = {4, 6, 8, 10} Output : Union : {2, 4, 5, 6, 8, 10} Intersection : {6}

**Union of arrays arr1[] and arr2[]**

To find union of two sorted arrays, follow the following merge procedure :

- Use two index variables i and j, initial values i = 0, j = 0
- If arr1[i] is smaller than arr2[j] then print arr1[i] and increment i.
- If arr1[i] is greater than arr2[j] then print arr2[j] and increment j.
- If both are same then print any of them and increment both i and j.
- Print remaining elements of the larger array.

Below is the implementation of the above approach

`// C# program to find union of`

`// two sorted arrays`

`using`

`System;`

`class`

`GFG {`

` `

`/* Function prints union of arr1[] and arr2[]`

` `

`m is the number of elements in arr1[]`

` `

`n is the number of elements in arr2[] */`

` `

`static`

`int`

`printUnion(`

`int`

`[] arr1,`

` `

`int`

`[] arr2, `

`int`

`m, `

`int`

`n)`

` `

`{`

` `

`int`

`i = 0, j = 0;`

` `

`while`

`(i < m && j < n) {`

` `

`if`

`(arr1[i] < arr2[j])`

` `

`Console.Write(arr1[i++] + `

`" "`

`);`

` `

`else`

`if`

`(arr2[j] < arr1[i])`

` `

`Console.Write(arr2[j++] + `

`" "`

`);`

` `

`else`

`{`

` `

`Console.Write(arr2[j++] + `

`" "`

`);`

` `

`i++;`

` `

`}`

` `

`}`

` `

`/* Print remaining elements of`

` `

`the larger array */`

` `

`while`

`(i < m)`

` `

`Console.Write(arr1[i++] + `

`" "`

`);`

` `

`while`

`(j < n)`

` `

`Console.Write(arr2[j++] + `

`" "`

`);`

` `

`return`

`0;`

` `

`}`

` `

`public`

`static`

`void`

`Main()`

` `

`{`

` `

`int`

`[] arr1 = { 1, 2, 4, 5, 6 };`

` `

`int`

`[] arr2 = { 2, 3, 5, 7 };`

` `

`int`

`m = arr1.Length;`

` `

`int`

`n = arr2.Length;`

` `

`printUnion(arr1, arr2, m, n);`

` `

`}`

`}`

Output:

1 2 3 4 5 6 7

**Time Complexity :** O(m + n)