国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 語(yǔ)言實(shí)現(xiàn)二分查找算法

這篇具有很好參考價(jià)值的文章主要介紹了Java 語(yǔ)言實(shí)現(xiàn)二分查找算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【引言】
二分查找算法是一種高效且常用的查找算法。它適用于已排序的數(shù)組或列表,并通過(guò)將目標(biāo)值與中間值進(jìn)行比較,來(lái)確定目標(biāo)值在左側(cè)還是右側(cè)。本文將使用Java語(yǔ)言實(shí)現(xiàn)二分查找算法,并詳細(xì)講解其思想和代碼實(shí)現(xiàn)。

【算法思想】
二分查找的核心思想是不斷縮小查找區(qū)間。具體步驟如下:

  1. 將查找的區(qū)間定義為[low, high],其中l(wèi)ow為最小索引,high為最大索引。
  2. 計(jì)算中間索引mid,并將中間值與目標(biāo)值進(jìn)行比較。
  3. 如果中間值等于目標(biāo)值,則返回中間索引。
  4. 如果中間值大于目標(biāo)值,則說(shuō)明目標(biāo)值在左側(cè),將high更新為mid-1,繼續(xù)在[left, mid-1]區(qū)間內(nèi)進(jìn)行查找。
  5. 如果中間值小于目標(biāo)值,則說(shuō)明目標(biāo)值在右側(cè),將low更新為mid+1,繼續(xù)在[mid+1, right]區(qū)間內(nèi)進(jìn)行查找。
  6. 重復(fù)步驟2-5,直到找到目標(biāo)值或區(qū)間縮小到無(wú)法再分割。

【Java代碼實(shí)現(xiàn)】
下面是用Java語(yǔ)言實(shí)現(xiàn)二分查找算法的代碼:

public class BinarySearch {
    public static int binarySearch(int[] arr, int target) {
        int low = 0;
        int high = arr.length - 1;

        while (low <= high) {
            int mid = low + (high - low) / 2;

            if (arr[mid] == target) {
                return mid;  // 返回目標(biāo)元素的索引
            } else if (arr[mid] > target) {
                high = mid - 1;  // 在左側(cè)區(qū)間進(jìn)行查找
            } else {
                low = mid + 1;  // 在右側(cè)區(qū)間進(jìn)行查找
            }
        }

        return -1;  // 目標(biāo)元素未找到
    }

    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9};
        int target = 7;
        int index = binarySearch(arr, target);

        if (index != -1) {
            System.out.println("元素 " + target + " 在數(shù)組中的索引為 " + index);
        } else {
            System.out.println("元素 " + target + " 未在數(shù)組中找到");
        }
    }
}

【代碼解析】
在代碼中,我們定義了一個(gè)靜態(tài)方法binarySearch來(lái)執(zhí)行二分查找。它接受一個(gè)已排序的整數(shù)數(shù)組和目標(biāo)元素作為輸入。通過(guò)不斷縮小查找區(qū)間,最終找到目標(biāo)元素的索引,或者返回-1表示目標(biāo)元素未找到。

main函數(shù)中,我們創(chuàng)建了一個(gè)已排序的測(cè)試數(shù)組和目標(biāo)元素,并調(diào)用binarySearch方法進(jìn)行查找。最后,我們將查找結(jié)果輸出到控制臺(tái)。

【時(shí)間復(fù)雜度和穩(wěn)定性】
二分查找算法的時(shí)間復(fù)雜度為O(logn),其中n表示數(shù)組的大小。由于每次查找都將查找區(qū)間縮小一半,因此二分查找算法比線性查找更高效。

二分查找算法是一種穩(wěn)定的查找算法,因?yàn)樗凑找欢ǖ囊?guī)則進(jìn)行比較和縮小區(qū)間,不會(huì)改變?cè)氐南鄬?duì)順序。

【總結(jié)】
本文使用Java語(yǔ)言實(shí)現(xiàn)了二分查找算法,并詳細(xì)講解了其思想和代碼實(shí)現(xiàn)。二分查找算法是一種高效且常用的查找算法,特別適用于已排序的數(shù)組或列表。希望本文對(duì)于理解和應(yīng)用二分查找算法有所幫助。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-678744.html

到了這里,關(guān)于Java 語(yǔ)言實(shí)現(xiàn)二分查找算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【算法與數(shù)據(jù)結(jié)構(gòu)】Java實(shí)現(xiàn)查找與排序

    【算法與數(shù)據(jù)結(jié)構(gòu)】Java實(shí)現(xiàn)查找與排序

    也叫做折半查找,屬于有序查找算法。 前提條件 :數(shù)組數(shù)據(jù)必須有序,從小到大,或者從大到小都是可以的。 如果是無(wú)序的,也可以先進(jìn)行排序。 但是排序之后,會(huì)改變?cè)袛?shù)據(jù)的順序,查找出來(lái)元素位置跟原來(lái)的元素可能是不一樣的,所以排序之后再查找只能判斷當(dāng)前數(shù)

    2024年01月19日
    瀏覽(31)
  • 數(shù)據(jù)結(jié)構(gòu)算法--1 順序查找二分查找

    順序查找時(shí)間復(fù)雜度為O(n) 我們可以借助Python中的函數(shù)enumerate,通過(guò)enumerate遍歷列表返回其索引和值 也可以通過(guò)列表長(zhǎng)度依次遍歷: 但是二分查找時(shí)間復(fù)雜度為O(logn):

    2024年02月12日
    瀏覽(37)
  • 數(shù)據(jù)結(jié)構(gòu),查找算法(二分,分塊,哈希)

    一、查找算法 ? ? ? ? 1、二分查找:(前提條件: 必須有序的序列) 2、分塊查找:(塊間有序,塊內(nèi)無(wú)序) ? ? 索引表 ?+ ?源數(shù)據(jù)表 ? ? 思路: ? ? (1)先在索引表中確定在哪一塊中 ? ? (2)再遍歷這一塊進(jìn)行查找 //索引表 typedef ?struct? { ?? ?int max; //塊中最大值

    2024年02月11日
    瀏覽(28)
  • Python數(shù)據(jù)結(jié)構(gòu)與算法篇(五)-- 二分查找與二分答案

    Python數(shù)據(jù)結(jié)構(gòu)與算法篇(五)-- 二分查找與二分答案

    1.1 定義 ????????二分查找又稱折半查找、二分搜索、折半搜索等,是一種在靜態(tài)查找表中查找特定元素的算法。 ????????所謂靜態(tài)查找表,即只能對(duì)表內(nèi)的元素做查找和讀取操作,不允許插入或刪除元素。 ????????使用二分查找算法,必須保證查找表中存放的是有

    2023年04月20日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu)和算法之二分法查找

    二分法查找,也稱作 二分查找 或 折半查找 ,是一種在有序數(shù)組中快速查找特定元素的算法。它采用分治法思想,通過(guò)將問(wèn)題劃分為規(guī)模更小的子問(wèn)題,并且通過(guò)對(duì)子問(wèn)題的查找來(lái)解決原問(wèn)題。 二分法查找的思路是不斷地將數(shù)組一分為二,然后判斷目標(biāo)值在哪一部分,進(jìn)而

    2024年02月09日
    瀏覽(31)
  • 數(shù)據(jù)結(jié)構(gòu)-查找(順序查找與二分查找的講解與代碼實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)-查找(順序查找與二分查找的講解與代碼實(shí)現(xiàn))

    順序查找概念:從表的另一端開(kāi)始,一次將記錄的和給定值進(jìn)行比較,若某個(gè)記錄的和給定的值相等,則查找成功,反之則查找失敗。 ASL:平均查找長(zhǎng)度 pi查找概率,ci查找次數(shù) eg:序列1,2,3 查找1的次數(shù)為1概率為1/3,2為兩次概率1/3,3的次數(shù)為3概率1/3? 將12

    2024年02月06日
    瀏覽(28)
  • 頭歌(C語(yǔ)言)-數(shù)據(jù)結(jié)構(gòu)與算法-查找-第1關(guān):實(shí)現(xiàn)折半查找

    頭歌(C語(yǔ)言)-數(shù)據(jù)結(jié)構(gòu)與算法-查找-第1關(guān):實(shí)現(xiàn)折半查找

    任務(wù)描述 相關(guān)知識(shí) 編程要求 測(cè)試說(shuō)明 任務(wù)描述 本關(guān)要求通過(guò)補(bǔ)全函數(shù) BSL_FindKey 來(lái)實(shí)現(xiàn)在已排序的順序表中查找關(guān)鍵碼值為 key 的結(jié)點(diǎn)并返回該結(jié)點(diǎn)的編號(hào)。 相關(guān)知識(shí) 折半查找通常是針對(duì)順序存儲(chǔ)的線性表,線性表的結(jié)點(diǎn)按關(guān)鍵碼從小到大排序,后面稱之為折半查找的順序

    2024年02月10日
    瀏覽(105)
  • 數(shù)據(jù)結(jié)構(gòu)——用Java實(shí)現(xiàn)二分搜索樹(shù)

    數(shù)據(jù)結(jié)構(gòu)——用Java實(shí)現(xiàn)二分搜索樹(shù)

    目錄 一、樹(shù) 二、二分搜索樹(shù) 1.二叉樹(shù) 2.二分搜索樹(shù) 三、代碼實(shí)現(xiàn) 1.樹(shù)的構(gòu)建 2.獲取樹(shù)中結(jié)點(diǎn)的個(gè)數(shù) 3.添加元素 4.查找元素 (1)查找元素是否存在 (2)查找最小元素 (3)查找最大元素 5.二分搜索樹(shù)的遍歷 (1)前序遍歷: (2)中序遍歷: (3)后序遍歷: (4)層序遍歷

    2024年02月19日
    瀏覽(26)
  • Java-三個(gè)算法冒泡-選擇排序,二分查找

    Java算法: 冒泡排序; 解析:將前后兩個(gè)數(shù)對(duì)比,將大的數(shù)(或小的)調(diào)換至后面,每輪將對(duì)比過(guò)程中的最大(或最?。?shù),調(diào)到最后面。每輪對(duì)比數(shù)減一;初始對(duì)比數(shù)為數(shù)組長(zhǎng)度-1. 選擇排序: 解析:選擇第一個(gè)數(shù)依次與其他元素對(duì)比,數(shù)值小的或(大的)交換位置至前方(

    2024年02月11日
    瀏覽(21)
  • Java:簡(jiǎn)單算法:冒泡排序、選擇排序、二分查找

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包