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

逢試必考的二分查找(算法村第九關(guān)青銅挑戰(zhàn))

這篇具有很好參考價(jià)值的文章主要介紹了逢試必考的二分查找(算法村第九關(guān)青銅挑戰(zhàn))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

位運(yùn)算

除法在計(jì)算機(jī)中效率很低,一般改用 >> x ,意思是二進(jìn)制數(shù)的每個(gè)位右移 x 位。從十進(jìn)制的角度看, x 是以 2 為底的指數(shù),這個(gè)指數(shù)就是除數(shù)。

//等價(jià)式
mid = (low + high) / 2;
mid = low + high >> 2;	//效率提高
mid = low + (high - low >> 2);	//防止(low + high)溢出

在 Java 中,位運(yùn)算符 >> 的優(yōu)先級(jí)低于加法運(yùn)算符 +,所以需要使用括號(hào)來保證正確的優(yōu)先級(jí)文章來源地址http://www.zghlxwxcb.cn/news/detail-813971.html

用遞歸實(shí)現(xiàn)二分查找

/**
 * @param arr 升序數(shù)組
 */
public static int binarySearch(int[] arr, int low, int high, int target)
{
    if(low > high)
        return -1;  //沒有找到返回-1

    int mid = low + (high - low >> 1);

    if(arr[mid] == target)
        return mid; //返回目標(biāo)值的位置

    else if(arr[mid] < target)
        return binarySearch(arr,mid + 1, high, target); //向右尋找

    else
        return binarySearch(arr, low, mid - 1, target); //向左尋找
}

有重復(fù)元素的二分查找

迭代實(shí)現(xiàn)

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

    // 使用二分查找法查找target
    while (low <= high)
    {
        int mid = low + (high - low >> 1);

        // 如果中間元素等于target,則返回中間元素索引
        if (arr[mid] == target)
        {
            // 如果中間元素不是第一個(gè)元素,則繼續(xù)向前查找
            while (mid != 0 && arr[mid] == target)
                mid--;

            // 如果中間元素是第一個(gè)元素,則返回0
            if (mid == 0)
                return 0;
            else
                return mid + 1;
        }
        // 如果中間元素小于target,則將low移動(dòng)到mid+1
        else if (arr[mid] < target)
            low = mid + 1;
        // 如果中間元素大于target,則將high移動(dòng)到mid-1
        else
            high = mid - 1;
    }

    // 如果查找結(jié)束沒有找到target,則返回-1
    return -1;
}

到了這里,關(guān)于逢試必考的二分查找(算法村第九關(guān)青銅挑戰(zhàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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)文章

  • 算法通關(guān)村第九關(guān)——中序遍歷與搜索樹

    算法通關(guān)村第九關(guān)——中序遍歷與搜索樹

    二叉搜索樹按照中序遍歷正好是一個(gè)遞增序列。其比較規(guī)范的定義是: 若它的左子樹不為空,則左子樹上所有節(jié)點(diǎn)的值均小于它的根節(jié)點(diǎn)的值; 若它的右子樹不為空,則右子樹所有節(jié)點(diǎn)的值均大于它的根節(jié)點(diǎn)的值; 它的左、右子樹也分別為二叉搜索樹,比如下面的例子:

    2024年02月11日
    瀏覽(27)
  • 【算法系列篇】二分查找——這還是你所知道的二分查找算法嗎?

    【算法系列篇】二分查找——這還是你所知道的二分查找算法嗎?

    在生活中,我們往往會(huì)遇到在數(shù)組中查找某個(gè)確定的元素的時(shí)候,通常我們會(huì)選擇使用暴力解法,這樣雖然簡(jiǎn)單,但是時(shí)間復(fù)雜度是O(N),時(shí)間效率比較低。那么是否有方法可以使得在具有二段性的數(shù)組中找某一特定的元素的時(shí)間復(fù)雜度低于0(N)呢?答案是肯定的,當(dāng)我們可以

    2024年02月11日
    瀏覽(21)
  • 【算法系列 | 8】深入解析查找算法之—二分查找

    【算法系列 | 8】深入解析查找算法之—二分查找

    心若有陽光,你便會(huì)看見這個(gè)世界有那么多美好值得期待和向往。 決定開一個(gè)算法專欄,希望能幫助大家很好的了解算法。主要深入解析每個(gè)算法,從概念到示例。 我們一起努力,成為更好的自己! 今天第8講,講一下查找算法的二分查找 查找算法是很常見的一類問題,主

    2024年02月07日
    瀏覽(32)
  • C++二分算法(二分查找&二分答案)細(xì)節(jié)詳解

    ?二分算法可以分為 二分查找 和 二分答案 。 以在一個(gè) 升序數(shù)組 中查找一個(gè)數(shù)為例。它每次考察數(shù)組當(dāng)前部分的 中間元素 ,如果中間元素剛好是要找的,就結(jié)束搜索過程;如果中間元素小于所查找的值,那么左側(cè)的只會(huì)更小,不會(huì)有所查找的元素,只需到右側(cè)查找;如果

    2024年02月08日
    瀏覽(18)
  • 【算法】二分查找(整數(shù)二分和浮點(diǎn)數(shù)二分)

    【算法】二分查找(整數(shù)二分和浮點(diǎn)數(shù)二分)

    大家好!今天我們來學(xué)習(xí)二分查找算法,這是一種效率很高的算法哦! 目錄 1. 整數(shù)二分 2. 整數(shù)二分模板 3. 整數(shù)二分模板題 3.1 洛谷 P2249 【深基13.例1】查找 3.2?Acwing789. 數(shù)的范圍 4. 浮點(diǎn)數(shù)二分 5. 浮點(diǎn)數(shù)二分模板 6. 浮點(diǎn)數(shù)二分模板題 6.1 Acwing 790.數(shù)的三次方根 6.2 洛谷 P1024 [

    2024年02月10日
    瀏覽(22)
  • 【Python查找算法】二分查找、線性查找、哈希查找

    【Python查找算法】二分查找、線性查找、哈希查找

    目錄 1 二分查找算法 ?2 線性查找算法 3 哈希查找算法 ????????二分查找(Binary Search)是一種用于在有序數(shù)據(jù)集合中查找特定元素的高效算法。它的工作原理基于將數(shù)據(jù)集合分成兩半,然后逐步縮小搜索范圍,直到找到目標(biāo)元素或確定目標(biāo)元素不存在。 以下是二分查找的

    2024年02月08日
    瀏覽(24)
  • 【算法小課堂】二分查找算法

    【算法小課堂】二分查找算法

    當(dāng)我們要從一個(gè)序列中查找一個(gè)元素的時(shí)候,最快想到的方法就是順序查找法(即:從前到后依次查找)。但這種方法過于無腦,就是暴力的把每個(gè)元素都排查一遍。元素個(gè)數(shù)少的時(shí)候還行,一旦元素個(gè)數(shù)多起來,效率是非常低下,所以在實(shí)際中這種查找的方法是被摒棄的。

    2024年02月08日
    瀏覽(20)
  • 【算法】簡(jiǎn)單的二分查找算法

    【算法】簡(jiǎn)單的二分查找算法

    一個(gè)簡(jiǎn)單的二分查找算法: ????????簡(jiǎn)單描述:算法由靜態(tài)方法rank()實(shí)現(xiàn),它接受一個(gè)整數(shù)鍵和一個(gè)有序的int數(shù)組作為參數(shù),如果整數(shù)存在于數(shù)組,返回它的索引,否則返回-1,算法使用兩個(gè)變量lo和hi,并保證整數(shù)如果存在于數(shù)組中則它一定存在于a[lo...hi]中,然后通過循

    2024年01月21日
    瀏覽(28)
  • Java數(shù)據(jù)結(jié)構(gòu)與算法:查找算法之二分查找

    大家好,我是免費(fèi)搭建查券返利機(jī)器人賺傭金就用微賺淘客系統(tǒng)3.0的小編,歡迎回到本專欄。在這個(gè)冰冷的季節(jié)里,我們將一同探討Java中一種高效的查找算法——二分查找。讓我們點(diǎn)燃知識(shí)的火花,一同解鎖這個(gè)查找奇跡的秘密! 二分查找簡(jiǎn)介 二分查找,也稱為折半查找,

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

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

    2024年02月12日
    瀏覽(37)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包