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

`# Python program to find union of`

`# two sorted arrays`

`# Function prints union of arr1[] and arr2[]`

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

`# n is the number of elements in arr2[]`

`def`

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

` `

`i, j `

`=`

`0`

`, `

`0`

` `

`while`

`i < m `

`and`

`j < n:`

` `

`if`

`arr1[i] < arr2[j]:`

` `

`print`

`(arr1[i])`

` `

`i `

`+`

`=`

`1`

` `

`elif`

`arr2[j] < arr1[i]:`

` `

`print`

`(arr2[j])`

` `

`j`

`+`

`=`

`1`

` `

`else`

`:`

` `

`print`

`(arr2[j])`

` `

`j `

`+`

`=`

`1`

` `

`i `

`+`

`=`

`1`

` `

`# Print remaining elements of the larger array`

` `

`while`

`i < m:`

` `

`print`

`(arr1[i])`

` `

`i `

`+`

`=`

`1`

` `

`while`

`j < n:`

` `

`print`

`(arr2[j])`

` `

`j `

`+`

`=`

`1`

`# Driver program to test above function`

`arr1 `

`=`

`[`

`1`

`, `

`2`

`, `

`4`

`, `

`5`

`, `

`6`

`]`

`arr2 `

`=`

`[`

`2`

`, `

`3`

`, `

`5`

`, `

`7`

`]`

`m `

`=`

`len`

`(arr1)`

`n `

`=`

`len`

`(arr2)`

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

Output:

1 2 3 4 5 6 7

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