Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. package search;
  2.  
  3. public class BinarySearchMissing {
  4.     public static void main(String[] args) {
  5.         int x = getArgument(args);
  6.         int[] array = getArray(args);
  7.         System.out.println(binarySearchRecursive(array, x) & binarySearchIterative(array, x));
  8.     }
  9.  
  10.     private static int binarySearchIterative(int[] array, int value) {
  11.         int l = 0, r = array.length;
  12.         int m;
  13.         while (l < r) {
  14.             m = (l + r) / 2;
  15.             if (array[m] > value) {
  16.                 l = m + 1;
  17.             } else {
  18.                 r = m;
  19.             }
  20.         }
  21.         return getPosition(array, r, value);
  22.     }
  23.  
  24.     private static int binarySearchRecursive(int[] array, int value) {
  25.         int l = 0, r = array.length;
  26.         if (l == r) {
  27.             return -1;
  28.         }
  29.         int m = (l + r) / 2;
  30.         if (value >= array[m]) {
  31.             return binarySearchRecursive(array, value, l, m);
  32.         } else {
  33.             return binarySearchRecursive(array, value, m + 1, r);
  34.         }
  35.     }
  36.  
  37.     private static int binarySearchRecursive(int[] array, int value, int l, int r) {
  38.         if (!(l < r)) {
  39.             return getPosition(array, r, value);
  40.         }
  41.         int m = (l + r) / 2;
  42.         if (value >= array[m]) {
  43.             return binarySearchRecursive(array, value, l, m);
  44.         } else {
  45.             return binarySearchRecursive(array, value, m + 1, r);
  46.         }
  47.     }
  48.  
  49.     private static int getPosition(int[] array, int pos, int value) {
  50.         if (pos < array.length && array[pos] == value) {
  51.             return pos;
  52.         } else {
  53.             return -pos - 1;
  54.         }
  55.     }
  56.  
  57.     private static int getArgument(String[] array) {
  58.         return Integer.parseInt(array[0]);
  59.     }
  60.  
  61.     private static int[] getArray(String[] array) {
  62.         int[] result = new int[array.length - 1];
  63.         for (int i = 0; i < array.length - 1; i++) {
  64.             result[i] = Integer.parseInt(array[i + 1]);
  65.         }
  66.         return result;
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement