用二分查找法实现数组的查找

public class BinarySearch {

    public static void main(String[] args) {
        int a[] = { 1, 3, 6, 8, 9, 10, 12, 18, 20, 34 };
        int i = 12;
        
        System.out.println("您所要查找数  "+i+" 的位置是: "+binarySearch(a,i));

    }
    
    //二分查找
    public static int binarySearch(int a[],int m) {
        if(a.length == 0) return -1;
        int begin = 0;    //起始位置
        int end = a.length - 1;    //末尾位置
        int mid = (begin + end) / 2;    //要查找的中间位置
        
        while(begin <= end) {
            if(a[mid] == m) {    //返回找到的位置
                return mid;
            }else if(a[mid] > m) {    //如果中间位置的值比所要找的值大,那么末尾位置指向中间位置的上一个位置
                end = mid - 1;
            }else{    //如果中间位置的值比所要找的值小,那么起始位置指向中间位置的下一个位置
                begin = mid + 1;
            }
            mid = (begin + end) / 2;
        }
        return -1;
    }

}

运行结果是:

您所要查找数  12 的位置是: 6

猜你喜欢

转载自www.cnblogs.com/pangxiaoshuai/p/10808239.html
今日推荐