Binary Search

 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 }

 

posted @ 2013-06-03 22:39  李土鳖  阅读(192)  评论(0编辑  收藏  举报