二分查找法 Java实现

    /***
     * 二分查找法
     * 1、首先需要一个排序好的数组
     * 2、设置一个左边界L=0 , 设置一个右边界R=length-1;
     * 3、循环(l<=r)
     *   设置一个中间值M = l+r >>> 2  //位运算 相当于 (l+r)/2
     * 4、判断m下标的值
     * 4.1、如果下标值 等于 需要查的值返回下标
     * 4.2、如果下标值 大于 需要查找的值 那就 r=m-1;
     * 4.3、如果下标值 小于 需要查找的值 那就 l=m+1;
     * @param arr 需要查找的数组
     * @param tag  查找的值
     * @return  返回下标
     */
    public static int binarySearch(int[] arr,int tag){
        int l=0,r=arr.length-1,m;

        while(l<=r){
            m = (l+r)/2;
            System.out.println(m);
            if(arr[m] == tag){
                return m;
            }else if(arr[m] > tag){
                r = m - 1;
            }else{
                 l= m + 1;
            }
        }

        //没有查询到
        return -1;
    }
posted @ 2021-11-28 20:53  码小农的幸福生活  阅读(56)  评论(0编辑  收藏  举报