二分查找

public class BinarySearch {
    public static int rank(int key,int[] a){
        int lo =0;
        int hi=a.length-1;
        while (lo<=hi){
            //被寻找的键要么不存在,要么必然存在于a【ho--hi】值中
            int mid= lo+(hi-lo)/2;
            if (key<a[mid]) hi=mid-1;
            else if(key>a[mid])  lo=mid+1;
            else  return mid;
        }
        return -1;
    }


    public static void main(String[] args) {
        int i=0;
        int result;
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入键值");
        int key = scanner.nextInt();
        System.out.println("输入一个元素小于10的数组");
        int[] a= new int[20];
        while (i<15){
           a[i] = scanner.nextInt();
           i++;
        }
        result = BinarySearch.rank(key, a);
        if (result<0)
            System.out.println(key+"不存在");
        else
            System.out.println("所寻找键值在第"+(result+1)+"位上");
    }
}