有序数组的二分查找

public class OrderedArray {
    //有序数组的二分查找;
    public int find(int arr[],int key){
        int lowerBound = 0;
        int upperBound = arr.length - 1;
        int curIn;
        while(true){
            curIn = (lowerBound + upperBound)/2;
            if(arr[curIn] == key){//找到了
                return curIn;
            }
            else if(lowerBound > upperBound){//没找到
                return arr.length;
            }
            else{
                if(arr[curIn] < key){
                    lowerBound = curIn + 1;
                }
                else{
                    upperBound = curIn - 1;
                }
            }
            
        }
    }
    public static void main(String[] args) {
        int[] t = {1,2,3,4,5,6,7,8,9,10};
        OrderedArray o = new OrderedArray();
        System.out.println(o.find(t,11));
    }
}

 

posted @ 2013-01-24 11:22  tangrongyue  Views(248)  Comments(0Edit  收藏  举报