二分法查找(即使有相同)

来源:互联网 发布:香港小鱼儿最近域名 编辑:程序博客网 时间:2024/05/22 17:50
public class BinarySearch {
    public int getPos(int[] A, int n, int val) {
        if(n<=0) {
            return -1;
        }
        int low = 0;   
        int high = A.length-1;   
        while(low <= high) {   
            int middle = (low + high)/2;   
            if(val == A[middle]) {  
                while(middle>0&&A[middle-1]==A[middle]){
                    middle--;
                }
                return middle ;   
            }else if(val < A[middle]) {   
                high = middle - 1;   
            }else {   
                low = middle + 1;   
            }  
        }
        return -1;
    }
}
0 0