# Java Program to Find the closest pair from two sorted arrays

• Last Updated : 02 Jan, 2019

Given two sorted arrays and a number x, find the pair whose sum is closest to x and the pair has an element from each array.

We are given two arrays ar1[0…m-1] and ar2[0..n-1] and a number x, we need to find the pair ar1[i] + ar2[j] such that absolute value of (ar1[i] + ar2[j] – x) is minimum.

Example:

```Input:  ar1[] = {1, 4, 5, 7};
ar2[] = {10, 20, 30, 40};
x = 32
Output:  1 and 30

Input:  ar1[] = {1, 4, 5, 7};
ar2[] = {10, 20, 30, 40};
x = 50
Output:  7 and 40
```

## Java

 `// Java program to find closest pair in an array``class` `ClosestPair {``    ``// ar1[0..m-1] and ar2[0..n-1] are two given sorted``    ``// arrays/ and x is given number. This function prints``    ``// the pair from both arrays such that the sum of the``    ``// pair is closest to x.``    ``void` `printClosest(``int` `ar1[], ``int` `ar2[], ``int` `m, ``int` `n, ``int` `x)``    ``{``        ``// Initialize the diff between pair sum and x.``        ``int` `diff = Integer.MAX_VALUE;`` ` `        ``// res_l and res_r are result indexes from ar1[] and ar2[]``        ``// respectively``        ``int` `res_l = ``0``, res_r = ``0``;`` ` `        ``// Start from left side of ar1[] and right side of ar2[]``        ``int` `l = ``0``, r = n - ``1``;``        ``while` `(l < m && r >= ``0``) {``            ``// If this pair is closer to x than the previously``            ``// found closest, then update res_l, res_r and diff``            ``if` `(Math.abs(ar1[l] + ar2[r] - x) < diff) {``                ``res_l = l;``                ``res_r = r;``                ``diff = Math.abs(ar1[l] + ar2[r] - x);``            ``}`` ` `            ``// If sum of this pair is more than x, move to smaller``            ``// side``            ``if` `(ar1[l] + ar2[r] > x)``                ``r--;``            ``else` `// move to the greater side``                ``l++;``        ``}`` ` `        ``// Print the result``        ``System.out.print(``"The closest pair is ["` `+ ar1[res_l] + ``", "` `+ ar2[res_r] + ``"]"``);``    ``}`` ` `    ``// Driver program to test above functions``    ``public` `static` `void` `main(String args[])``    ``{``        ``ClosestPair ob = ``new` `ClosestPair();``        ``int` `ar1[] = { ``1``, ``4``, ``5``, ``7` `};``        ``int` `ar2[] = { ``10``, ``20``, ``30``, ``40` `};``        ``int` `m = ar1.length;``        ``int` `n = ar2.length;``        ``int` `x = ``38``;``        ``ob.printClosest(ar1, ar2, m, n, x);``    ``}``}``/*This code is contributed by Rajat Mishra */`
Output:
```The closest pair is [7, 30]
```

Please refer complete article on Find the closest pair from two sorted arrays for more details!

My Personal Notes arrow_drop_up