Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

두 개의 정렬된 배열에서 가장 가까운 쌍을 찾는 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("The closest pair that matches two arrays is [" + 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);
   }
}

출력

The closest pair that matches two arrays is [56, 33]

Demo라는 클래스에는 'closest_pair'라는 함수가 포함되어 있습니다. 이 함수는 두 배열을 반복하고 이전에 지정된 숫자에 매우 가까운 숫자로 합산되는 합계를 확인합니다. 배열의 이 쌍이 출력으로 반환됩니다. 메인 함수에서 Demo 클래스의 새 인스턴스가 정의되고 배열이 정의되며 길이가 각각 두 개의 변수에 할당됩니다. 함수는 배열, 배열의 길이 및 값을 전달하여 호출됩니다. 해당 메시지가 콘솔에 표시됩니다.