算法與數(shù)據(jù)結(jié)構(gòu)-查找算法之二分查找法

之前給小伙伴們分享了線性查找,那么這篇文章還是以分享查找算法為主,主要講的是二分查找法。

二分查找法

二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲(chǔ)結(jié)構(gòu),而且表中元素按關(guān)鍵字有序排列。

代碼舉例

/** 二分查找法 */
public class TestBinarySearch {
    public static void main(String[] args) {
        // 目標(biāo)數(shù)組
        int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        // 目標(biāo)元素
        int target = 8;
        // 記錄開始位置
        int begin = 0;
        // 記錄結(jié)束位置
        int end = arr.length - 1;
        // 記錄中間位置
        int mid = (begin + end) / 2;
        // 記錄目標(biāo)位置
        int index = -1;
        // 循環(huán)查找
        while (true) {
            if (arr[mid] == target) {
                // 判斷中間的這個(gè)元素是不是要查找的元素
                index = mid;
                break;
            } else {
                // 中間這個(gè)元素不是要查找的元素
                if (arr[mid] > target) {
                    // 判斷中間這個(gè)元素比目標(biāo)元素大
                    // 把結(jié)束位置調(diào)整到中間位置前一個(gè)位置
                    end = mid - 1;
                } else {
                    // 判斷中間這個(gè)元素比目標(biāo)元素小
                    // 把結(jié)束位置調(diào)整到中間位置后一個(gè)位置
                    begin = mid + 1;
                }
                // 取出新的中間位置
                mid = (begin + end) / 2;
            }
        }
        // 打印目標(biāo)元素的位置
        System.out.println("index:" + index);
    }
}

關(guān)于二分查找法的簡單實(shí)例大概是這樣,希望對(duì)看文章的小伙伴有所幫助。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容