最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

圖解Java經(jīng)典算法折半查找的原理與實(shí)現(xiàn)

 更新時(shí)間:2022年09月10日 09:45:33   作者:Binaire-沐辰  
折半查找法也叫做?分查找,顧名思義就是把數(shù)據(jù)分成兩半,再判斷所查找的key在哪?半中,再重復(fù)上述步驟知道找到?標(biāo)key,下面這篇文章主要介紹了圖解Java經(jīng)典算法折半查找的原理與實(shí)現(xiàn)

二分查找

二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法,可以在數(shù)據(jù)規(guī)模的對數(shù)時(shí)間復(fù)雜度內(nèi)完成查找。是一種在有序數(shù)組中查找某一特定元素的搜索算法。

算法思路

以升序數(shù)列為例,比較目標(biāo)元素與數(shù)列中間位置的元素的大小,如果目標(biāo)元素比中間位置的元素大,則繼續(xù)在數(shù)列的后半部分中進(jìn)行二分查找;如果目標(biāo)元素比中間位置的元素小,則在數(shù)列的前半部分進(jìn)行比較;如果相等,則找到了元素的位置。每次比較的數(shù)列長度都會(huì)是之前數(shù)列的一半,直到找到相等元素的位置或者最終沒有找到目標(biāo)元素。

圖解

給定一個(gè)有序的升序排列的數(shù)組 nums=[-1,0,2,5,8,12,18,38,43,46]

然后在該數(shù)組中找到目標(biāo)值 target = 12。

圖解如下:

力扣原題

傳送門

題目描述:

給定一個(gè) n 個(gè)元素有序的(升序)整型數(shù)組 nums 和一個(gè)目標(biāo)值 target ,寫一個(gè)函數(shù)搜索 nums 中的 target,如果目標(biāo)值存在返回下標(biāo),否則返回 -1。

示例 1:

輸入: nums = [-1,0,3,5,9,12], target = 9
輸出: 4
解釋: 9 出現(xiàn)在 nums 中并且下標(biāo)為 4

示例 2:

輸入: nums = [-1,0,3,5,9,12], target = 2
輸出: -1
解釋: 2 不存在 nums 中因此返回 -1

解題思路:

根據(jù)題意得出該數(shù)組為有序數(shù)組,這也是使用二分查找的前提條件。

  • 定義兩個(gè)指針分別指向數(shù)組的首尾兩個(gè)元素;
  • 找到數(shù)組的中間值mid;
  • 如果nums[mid] < target,則 target 位于數(shù)組的后半部分,反之nums[mid] > target在前半部分;
  • 重復(fù)上一步操作,直到nums[mid] = target,說明找到target,返回下標(biāo)即可。

Java代碼實(shí)現(xiàn):

class Solution {
    public int search(int[] nums, int target) {
        int left = 0,right = nums.length - 1;
        while(left <= right) { // 循環(huán)條件
            int mid = left + (right - left) / 2;
            if(nums[mid] == target){
                return mid;
            } else if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return -1;  // 找不到則返回-1
    }
}

復(fù)雜度分析:

  • 時(shí)間復(fù)雜度:O(logn),其中 n 是數(shù)組的長度。
  • 空間復(fù)雜度:O(1)。

到此這篇關(guān)于圖解Java經(jīng)典算法折半查找的原理與實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java折半查找內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA集成DeepSeek的詳細(xì)教程(保姆級教程)

    IDEA集成DeepSeek的詳細(xì)教程(保姆級教程)

    DeepSeek作為一款強(qiáng)大的代碼搜索和分析工具,能夠幫助開發(fā)者快速定位代碼、理解項(xiàng)目結(jié)構(gòu)以及優(yōu)化代碼質(zhì)量,本文將詳細(xì)介紹如何在IntelliJ?IDEA中集成DeepSeek,并展示如何利用它來提升開發(fā)效率,感興趣的朋友一起看看吧
    2025-02-02
  • 將java程序打成jar包在cmd命令行下執(zhí)行的方法

    將java程序打成jar包在cmd命令行下執(zhí)行的方法

    這篇文章主要給大家介紹了關(guān)于將java程序打成jar包在cmd命令行下執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • SpringBoot視圖解析實(shí)現(xiàn)原理深入分析

    SpringBoot視圖解析實(shí)現(xiàn)原理深入分析

    視圖解析其實(shí)就是SpringBoot某一個(gè)controller的方法執(zhí)行完成之后,它是跳轉(zhuǎn)到那個(gè)頁面。由于我們springboot項(xiàng)目默認(rèn)打包為jar包,是形成壓縮包的形式,而jsp又不支持壓縮,所以我們SpringBoot不知JSP的,需要引入第三方模板引擎才可以處理
    2022-10-10
  • Java使用Redis的方法實(shí)例分析

    Java使用Redis的方法實(shí)例分析

    這篇文章主要介紹了Java使用Redis的方法,接合實(shí)例形式分析了相關(guān)redis驅(qū)動(dòng)包安裝、java連接redis服務(wù)器、數(shù)據(jù)存儲(chǔ)、讀取等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • 攜程Apollo(阿波羅)安裝部署以及java整合實(shí)現(xiàn)

    攜程Apollo(阿波羅)安裝部署以及java整合實(shí)現(xiàn)

    這篇文章主要介紹了攜程Apollo(阿波羅)安裝部署以及java整合實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java中的functor實(shí)現(xiàn)

    Java中的functor實(shí)現(xiàn)

    Java中的functor實(shí)現(xiàn)...
    2006-12-12
  • Java中文件的操作與輸入輸出流舉例詳解

    Java中文件的操作與輸入輸出流舉例詳解

    Java語言的輸入輸出功能是十分強(qiáng)大而靈活的,下面這篇文章主要給大家介紹了關(guān)于Java中文件的操作與輸入輸出流的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • SpringBoot自定義配置項(xiàng)過程

    SpringBoot自定義配置項(xiàng)過程

    在SpringBoot項(xiàng)目中,通過在application.properties文件中添加配置項(xiàng),然后使用@ConfigurationProperties注解將這些配置項(xiàng)與實(shí)體Bean進(jìn)行綁定,可以實(shí)現(xiàn)配置項(xiàng)與實(shí)體類字段的自動(dòng)關(guān)聯(lián),進(jìn)而方便地讀取配置文件中的數(shù)據(jù),這種方法不僅簡化了配置管理
    2024-11-11
  • Java三目運(yùn)算符用法舉例

    Java三目運(yùn)算符用法舉例

    三目運(yùn)算符是我們經(jīng)常在代碼中使用的,這篇文章主要給大家介紹了關(guān)于Java三目運(yùn)算符用法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Spring Boot security 默認(rèn)攔截靜態(tài)資源的解決方法

    Spring Boot security 默認(rèn)攔截靜態(tài)資源的解決方法

    這篇文章主要介紹了Spring Boot security 默認(rèn)攔截靜態(tài)資源,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評論

曲松县| 虹口区| 科技| 朝阳县| 阿鲁科尔沁旗| 克山县| 定西市| 建阳市| 长武县| 慈溪市| 安多县| 阜城县| 巨野县| 西盟| 抚顺市| 平阴县| 自治县| 阿鲁科尔沁旗| 呼玛县| 莱州市| 高邮市| 徐州市| 巴彦淖尔市| 崇左市| 沈丘县| 集安市| 渭源县| 莱西市| 麟游县| 芜湖县| 临沧市| 赣州市| 广南县| 怀安县| 宁国市| 定日县| 杭锦后旗| 湟中县| 黄山市| 陆丰市| 波密县|