1 import java.util.*;
2
3 public class BinarySearch {
4
5 public static final int NO_SUCH_KEY = -1;
6
7 public static int search(int[] keys, int key) {
8 if(keys == null || keys.length == 0)
9 return NO_SUCH_KEY;
10
11 return searchImpl(keys, key, 0, keys.length - 1);
12 }
13
14 private static int searchImpl(int[] keys, int key, int low, int high) {
15 if(low > high) return NO_SUCH_KEY;
16
17 int mid = (low + high) /2;
18 if(key == keys[mid])
19 return mid;
20 else if(key < keys[mid])
21 return searchImpl(keys, key, low, mid - 1);
22 else
23 return searchImpl(keys, key, mid + 1, high);
24 }
25
26 public static void main(String[] args) {
27 int[] keys = new int[10];
28 Random rand = new Random();
29 for(int i = 0; i < keys.length; i++) {
30 keys[i] = rand.nextInt() % 1000;
31 }
32 Arrays.sort(keys);
33 System.out.println(Arrays.toString(keys));
34
35 Scanner sc = new Scanner(System.in);
36 int k;
37 while(true) {
38 k = sc.nextInt();
39 int i = search(keys, k);
40
41 if(i == NO_SUCH_KEY) {
42 System.out.println("Not found, would exit.");
43 break;
44 } else {
45 System.out.println("Found, position:" + i);
46 }
47 }
48 }
49 }