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

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

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)和算法之二分法查找。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

二分法查找,也稱作二分查找折半查找,是一種在有序數(shù)組中快速查找特定元素的算法。它采用分治法思想,通過將問題劃分為規(guī)模更小的子問題,并且通過對子問題的查找來解決原問題。

二分法查找的思路是不斷地將數(shù)組一分為二,然后判斷目標(biāo)值在哪一部分,進而在該部分繼續(xù)進行二分查找。具體步驟如下:

  1. 首先,設(shè)置左邊界 left 為0,右邊界 right 為數(shù)組的長度減1。
  2. 然后,計算中間值 mid 為左邊界與右邊界的平均值,并取整。
  3. 接著,比較中間值 arr[mid] 與目標(biāo)值 target 的大小。如果相等,則返回索引 mid。
  4. 如果 arr[mid] 大于 target,說明目標(biāo)值在左半部分,將右邊界 right 更新為 mid-1。
  5. 如果 arr[mid] 小于 target,說明目標(biāo)值在右半部分,將左邊界 left 更新為 mid+1
  6. 重復(fù)步驟2至5,直到左邊界大于右邊界,表示數(shù)組中無目標(biāo)值,返回-1。

說明:

  • 開始時,初始化左指針l指向數(shù)組的首元素,右指針r指向數(shù)組的尾元素。
  • 判斷左指針l是否大于右指針r,如果是則表示沒有找到目標(biāo)值,結(jié)束查找。
  • 每次都取左指針l和右指針r中間的元素作為中間值。
  • 判斷中間值是否等于目標(biāo)值,如果是則表示找到目標(biāo)值,結(jié)束查找。
  • 如果中間值大于目標(biāo)值,說明目標(biāo)值在左半部分,更新右指針r為中間值的前一個位置,繼續(xù)查找。
  • 如果中間值小于目標(biāo)值,說明目標(biāo)值在右半部分,更新左指針l為中間值的后一個位置,繼續(xù)查找。
  • 繼續(xù)進行以上步驟,直到找到目標(biāo)值或者確定沒有目標(biāo)值。

示例代碼:

function binarySearch(arr, target) {
   let left = 0; // 定義左邊界指針為數(shù)組的起始位置
   let right = arr.length - 1; // 定義右邊界指針為數(shù)組的末尾位置

   while (left <= right) { // 當(dāng)左邊界指針小于等于右邊界指針時執(zhí)行循環(huán)
     let mid = Math.floor((left + right) / 2); // 計算中間元素的位置,向下取整

     if (arr[mid] === target) { // 如果中間元素等于目標(biāo)值
       return mid; // 返回中間元素的位置
     } else if (arr[mid] < target) { // 如果中間元素小于目標(biāo)值
       left = mid + 1; // 移動左邊界指針到中間元素的下一個位置
     } else { // 如果中間元素大于目標(biāo)值
       right = mid - 1; // 移動右邊界指針到中間元素的前一個位置
     }
   }

   return -1; // 如果循環(huán)結(jié)束仍未找到目標(biāo)值,則返回-1
}

// 示例使用
let arr = [1, 3, 5, 7, 9];
let target = 5;

let result = binarySearch(arr, target);
console.log(result); // 輸出 2

在上面的示例中,提供了一個有序數(shù)組 arr 和目標(biāo)值 target,然后調(diào)用 binarySearch 函數(shù)進行二分查找。最后輸出的結(jié)果為目標(biāo)值在數(shù)組中的索引,如果不存在則返回-1。文章來源地址http://www.zghlxwxcb.cn/news/detail-698258.html

左邊界指針 右邊界指針 中間元素位置 中間元素值 目標(biāo)值 結(jié)果
0 4 2 5 5 2

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)和算法之二分法查找的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【算法】—二分法詳解

    【算法】—二分法詳解

    ①定義: 二分查找算法也稱折半搜索算法,對數(shù)搜索算法,是一種在 有序數(shù)組 中查找某一特定元素的搜索算法。搜索過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結(jié)束;如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素

    2024年02月09日
    瀏覽(25)
  • 06-C++ 基本算法 - 二分法

    06-C++ 基本算法 - 二分法

    在這個筆記中,我們將介紹二分法這種基本的算法思想,以及它在 C++ 中的應(yīng)用。我們將從一個小游戲猜數(shù)字開始,通過這個案例來引出二分法的概念。然后我們將詳細講解什么是二分法以及它的套路和應(yīng)用。最后,我們還會介紹 C++ STL 中的二分查找函數(shù)。讓我們一起來探索

    2024年02月16日
    瀏覽(16)
  • 算法:二分法---尋找H指數(shù)

    算法:二分法---尋找H指數(shù)

    1、題目: 給你一個整數(shù)數(shù)組 citations ,其中 citations[i] 表示研究者的第 i 篇論文被引用的次數(shù)。計算并返回該研究者的 h 指數(shù) 。 根據(jù)維基百科上 h 指數(shù)的定義: h 代表“高引用次數(shù)” ,一名科研人員的 h 指數(shù) 是指他(她)至少發(fā)表了 h 篇論文,并且每篇論文 至少 被引用

    2024年02月08日
    瀏覽(21)
  • 初階算法(3):二分法的講解與實現(xiàn)(C語言),以及二分不止光在有序數(shù)組中的應(yīng)用

    ?第一章?初階算法(1):通過簡單的排序算法來認(rèn)識時間復(fù)雜度 ?第二章?初階算法(2):進行詳細地介紹插入排序的細節(jié)和時間復(fù)雜度 ?第三章 初階算法(3):二分法的講解與實現(xiàn),以及二分不止光在有序數(shù)組中的應(yīng)用 目錄 系列文章目錄 前言 一、二分法的講解與實現(xiàn)

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

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

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

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

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

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

    2024年02月11日
    瀏覽(28)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】python實現(xiàn)二分查找

    【數(shù)據(jù)結(jié)構(gòu)與算法】python實現(xiàn)二分查找

    二分查找 又稱折半查找,它是一種效率較高的查找方法 原理:首先,假設(shè)表中元素是按升序排列,將表中間位置記錄的與查找比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的大于查找,則

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

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

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

    2023年04月20日
    瀏覽(25)
  • 二分法簡單題

    2024年01月24日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包