L
A D I N G

Java程序从两个排序的数组中查找最接近的一对

为了从两个排序的数组中找到最接近的一对,Java代码如下:

示例

public class Demo {    void closest_pair(int my_arr_1[], int my_arr_2[], int arr_1_len, int arr_2_len, int sum){       int diff = Integer.MAX_VALUE;       int result_l = 0, result_r = 0;       int l = 0, r = arr_2_len-1;       while (l<arr_1_len && r>=0){          if (Math.abs(my_arr_1[l] + my_arr_2[r] - sum) < diff){             result_l = l;             result_r = r;             diff = Math.abs(my_arr_1[l] + my_arr_2[r] - result_l);          }          if (my_arr_1[l] + my_arr_2[r] > result_l)           r--;          else           l++;       }       System.out.print("与两个数组匹配的最接近的对是 [" + my_arr_1[result_l] + ", " +       my_arr_2[result_r] + "]");    }    public static void main(String args[]){       Demo my_ob = new Demo();       int my_arr_1[] = {56, 78, 99, 11};       int my_arr_2[] = {33, 12, 69, 87};       int arr_1_len = my_arr_1.length;       int arr_2_len = my_arr_2.length;       int val = 79;       my_ob.closest_pair(my_arr_1, my_arr_2, arr_1_len, arr_2_len, val);    } }

输出结果

与两个数组匹配的最接近的对是 [56, 33]

一个名为Demo的类包含一个名为closest_pair的函数,该函数遍历两个数组并检查哪个和与前面指定的数字非常接近。数组中的这对将作为输出返回。在main函数中,定义了Demo类的一个新实例,定义了数组,并将其长度分别分配给两个变量。通过传递数组、它们的长度和值来调用该函数。相关的消息显示在控制台上。