【數據結構與算法】—— 二分查找

二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。可是,折半查找要求線性表必須採用順序存儲結構,並且表中元素按關鍵字有序排列。java

二分介紹

前面介紹了,很少說數組

查找思路

首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查找關鍵字比較,若是二者相等,則查找成功;不然利用中間位置記錄將表分紅前、後兩個子表,若是中間位置記錄的關鍵字大於查找關鍵字,則進一步查找前一子表,不然進一步查找後一子表。重複以上過程,直到找到知足條件的記錄,使查找成功,或直到子表不存在爲止,此時查找不成功。spa

查找分析

來,老夫在畫個圖。這個圖應該是老夫畫的圖裏面的最好的一張圖了code

二分查找

代碼實現

/**
     * @param data  待查詢的數組
     * @param left  左標
     * @param right 右標
     * @param value 查找值
     * @return
     */
    private static int selectBinarySearch(int[] data, int left, int right, int value) {
        // 若是輸入的不合法,返回 -1
        if (left > right) {
            return -1;
        }
        int middle = (left + right) / 2;

        if (value < data[middle]) {
            return selectBinarySearch(data, left, middle, value);
        } else if (value > data[middle]) {
            return selectBinarySearch(data, middle, right, value);
        } else {
            return middle;
        }
    }
相關文章
相關標籤/搜索