1. 程式人生 > 其它 >二分查詢法 Java實現

二分查詢法 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;
    }