二分查找法

/**
     * 二分查找算法
     * 返回int
     *
     * 查找條件:
     * 順序存儲,而且是從小到大排列好順序
     */

    public static int binarySearch(int[] arr ,int key){
        int left = 0;
        int right = arr.length-1;

        int index = (left + right)/2;
        int middle = arr[index];

        while (key != middle){

            if(key < middle){
                right = index-1;

            }else if(key > middle){
                left = index+1;

            }

            index = (left + right)/2;
            middle = arr[index];

            //這判斷 == 就可以了,因爲不會出現left > right
            if (left == right){
                if(key != middle){
                    index = -1;
                }
                break;
            }
        }

        return index;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章