如果数组包含重复项则进行二分查找

2024-01-27

Hi,

如果我们使用二分搜索在以下数组中搜索 24,则搜索键的索引是多少。

array = [10,20,21,24,24,24,24,24,30,40,45]

我对二分搜索有疑问,如果数组有重复值,它是如何工作的。任何人都可以澄清吗?


您建议的数组在中间索引中具有目标值,并且在最有效的实现中将在第一级递归之前返回该值。此实现将返回“5”(中间索引)。

要理解该算法,只需在调试器中单步执行代码即可。

public class BinarySearch {
    public static int binarySearch(int[] array, int value, int left, int right) {
          if (left > right)
                return -1;
          int middle = left + (right-left) / 2;
          if (array[middle] == value)
                return middle;
          else if (array[middle] > value)
                return binarySearch(array, value, left, middle - 1);
          else
                return binarySearch(array, value, middle + 1, right);           
    }

    public static void main(String[] args) {
        int[] data = new int[] {10,20,21,24,24,24,24,24,30,40,45};

        System.out.println(binarySearch(data, 24, 0, data.length - 1));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果数组包含重复项则进行二分查找 的相关文章

  • mysql concat_ws 没有重复项

    我试图将几个字段连接成一个字段 但只在结果字符串中保留唯一值 Example title orig title fr title de title it KANDAHAR KANDAHAR REISE NACH KANDAHAR VIAGG
  • 如何在 git 树的顶部应用补丁以防止重复?

    我正在为一个我认为很简单的问题寻求建议 并且通过创建一个小脚本确实可能很简单 但我认为应该已经有一种方法可以使用 git quilt stgit 来做到这一点 我不太擅长 git 这给我带来了一些问题 我的问题 我有一个 git 树 lin
  • 为什么以下两个重复查找算法的时间复杂度不同?

    我正在读这个question https stackoverflow com questions 3951547 java array finding duplicates 所选答案包含以下两种算法 我不明白为什么第一个的时间复杂度是O l
  • 在 App Engine 数据存储区中查找重复项

    我的数据存储区中有一些重复的元素 不是整行 而是其中的大部分字段 找到他们的最佳方式是什么 我有重复的整数和字符串字段 以防比较一个比另一个更快 Thanks 一种愚蠢但快速的方法是获取您关心的字段 将它们连接为长字符串并将它们存储为DB
  • 获取ArrayList中重复项的数量

    例如 假设我有一个ArrayList可能包含以下值 x x x y y 现在我想要检索的是x and x我希望能够区分我所拥有的x or y因为实际上 我可以在 ArrayList 中拥有任何对象 并且我必须能够区分它们 我想做的是首先转换
  • 识别重复项并标记第一次出现的情况和所有其他情况

    我试图识别在矩阵中出现两次或多次的所有行 例如 m lt matrix c 1 2 1 3 1 4 1 2 2 3 2 3 1 2 5 ncol 3 m duplicated m 1 Outputs 1 2 3 1 1 4 2 2 2 1
  • 更改重复产品的 Magento 默认状态

    我安装了 Magento 商店 当后端复制产品时 Magento 默认将其状态设置为禁用 我不希望发生这种情况 复制的产品也应该从原始产品复制其状态 In 这个帖子 https stackoverflow com questions 465
  • 具有关联数组的唯一数组 - 删除重复项

    我有一个包含一些重复项目的关联数组 例如 我有
  • Pandas 忽略 NaN 删除重复项

    在 Pandas df 中 我尝试删除多个列中的重复项 每行有很多数据NaN 这只是一个例子 数据是一个混合包 因此存在许多不同的组合 df drop duplicates IDnum name formNumber 1 NaN AP GR
  • 在 SQL 中仅选择列中重复值的第一行

    我有一个表 其中有一列可能在突发中具有相同的值 像这样 id Col1 1 6050000 2 6050000 3 6050000 4 6060000 5 6060000 6 6060000 7 6060000 8 6060000 9
  • 在 Java 中删除数组中重复项的最佳方法是什么?

    我有一个对象数组 需要删除 过滤重复项 我打算只重写 Object 元素上的 equals 和 hach Code 然后将它们放在 Set 中 但我想我至少应该轮询 stackoverflow 以查看是否有另一种方法 也许是其他 API 的
  • 如何在pandas中的多个数据框列中“选择不同的”?

    我正在寻找一种与 SQL 等效的方法 SELECT DISTINCT col1 col2 FROM dataframe table pandas sql 比较没有任何内容distinct unique 只适用于单个列 所以我想我可以连接这些
  • 为什么pivot_wider要么将单个值读取为重复项,要么创建一个宽而长的小标题(不合并行)?

    我浏览了此处发布的大部分相关问题 但似乎没有一个问题与我面临的问题相同 根据我的阅读 此处已经发布的问题与长格式数据中的重复值 缺乏唯一标识符 有关 这会导致带有列表列的宽格式数据 这通常可以通过创建虚拟变量列来解决这是一串唯一的数字 我已
  • 插入前检查是否有重复项

    在插入数据库之前 我使用以下代码来检查重复项 对我来说 只有在以下情况下重复才被视为重复 name description price city and enddate match foreach states to add as item
  • 在重复键上仅更新 Null 或空值

    我有一个 mysql 查询来合并主键 IMO 上的两个表 查询工作正常 但我遇到的问题是在重复键更新时 我只想更新 wp second 表的那些没有值的字段 简而言之 在重复键上 wp second 值仅应在 null 或空时更新 这是我到
  • 从Oracle表中删除重复行

    我正在 Oracle 中测试某些内容并使用一些示例数据填充表 但在此过程中我不小心加载了重复记录 因此现在我无法使用某些列创建主键 如何删除所有重复行并只保留其中一行 Use the rowid伪列 DELETE FROM your tab
  • MySQL通过UPDATE/DELETE合并重复数据记录

    我有一个看起来像这样的表 mysql gt SELECT FROM Colors ID USERNAME RED GREEN YELLOW BLUE ORANGE PURPLE 1 joe 1 null 1 null null null 2
  • LINQ 对特定属性的 Distinct()

    我正在玩 LINQ 来了解它 但我不知道如何使用Distinct https learn microsoft com en us dotnet api system linq enumerable distinct当我没有一个简单的列表时
  • C++:如何检测向量中的重复项并打印一份副本?

    我是 C 新手 我想知道如何在向量中找到重复的字符串并打印出该字符串的一个副本 例如 如果我有它会打印出cat dog bird 我已经对我的向量进行了排序 并使用adjacent find函数并迭代该向量 因为我必须查找是否有任何单词重复
  • AMQP延迟传递并防止重复消息

    我有一个会偶尔生成消息的系统 我只想每 5 分钟提交零条或一条消息 如果没有生成消息 队列消费者将不会处理任何内容 如果 5 分钟内生成一百条相同的消息 我只希望从队列中使用其中一条 我正在使用AMQP RabbitMQ 有没有办法在rab

随机推荐

  • 无法在本地主机上测试 facebook like 按钮(与以前不同)

    我开发了一个带有 Facebook 社交插件 点赞 推荐和发送按钮 的小网页 直到大约一个月前 我才能在本地主机上成功测试按钮和单击事件 但突然按钮现在无法在本地主机上工作 仅当我通过 localtunnel 将网页部署在公共 IP 上时
  • 修剪 ggplot2 中的第一个和最后一个标签

    我有一个按天列出两种类型数据的图 我希望只修剪图中的第一个和最后一个标签 这是数据的可重现示例 library dplyr library ggplot2 library scales dates lt paste0 2014 01 1 3
  • 读取 D3 中没有标题行的 csv/tsv

    我有 CSV 数据 看起来像 Data 1 1 10 1 2 50 1 3 5 etc 我正在尝试读入数据 但是 我的初始数据不包含标题行 如上所示 因此它将第一个数据行作为标题 1 1 10 有没有办法解决 我想在读取数据后设置标题名称
  • 如何使用 jQuery 验证插件以编程方式检查表单是否有效

    我有一个带有几个按钮的表单 我正在使用 jQuery 验证插件http jquery bassistance de validate http jquery bassistance de validate 我只是想知道是否有任何方法可以检查
  • 为什么我的侧边栏被推到内容下方?

    我正在尝试使用 HTML 和 CSS 设置模板 但我的侧边栏出现问题 它似乎被推到了我的内容下方 尽管它应该是在左侧 我不明白为什么 有没有人有什么建议 Example http jsfiddle net zDdfn http jsfidd
  • 在 SELECT 语句中使用 UDF

    我制作了一个用于计算营业时间的用户定义函数 这是我的UDF CREATE FUNCTION fn GetBusinessHour date datetime addHours int RETURNS datetime AS BEGIN DE
  • 括号() 和 SQL 查询性能

    在where语句中 是否添加不必要的括号 影响SQL性能 Example SELECT FROM table WHERE name John AND age 30 AND address Some Street AND height 510
  • Docker 容器拒绝连接

    我已经为此挣扎了相当长一段时间 我有一个 Django 应用程序 我正在尝试将其打包到容器中 问题是 当我发布到某个端口 8001 时 主机拒绝我的连接 docker machine ip default 192 168 99 100 当我
  • Derby 数据库导出为单个文件?

    我正在制作一个小型应用程序 并且正在使用嵌入式 derby 数据库 我希望该应用程序能够将整个数据库保存到一个文件中 该文件可以存储在硬盘驱动器上 并且还可以通过在未来 关于我该怎么做的任何线索或例子 这可能会帮助你 1 资源1 http
  • wpf按钮点击事件

    In this question https stackoverflow com questions 4720446 wpf adding tabitems dynamically 4722047 4722047我问了关于添加TabItem
  • Knockout.Js 数组过滤器语法

    刚刚开始接触 javascript 和 knockout js 我找到了很多我想要实现的目标的例子 我觉得我可能忽略了一个小语法错误 我正在尝试过滤已返回的集合 这个任务 通过 ajax json 从服务器获取 我的那个工作得很好 我想做的
  • PostgreSQL 未出现 RDS 日志记录

    我按照说明进行操作here https docs aws amazon com AmazonRDS latest UserGuide USER LogAccess Concepts PostgreSQL html 我的参数组更改的摘要如下所
  • 为什么不推荐使用浏览器嗅探?

    你到处都会听到这样的说法 使用 javascript 嗅探用户代理字符串来检测浏览器版本是一件非常糟糕的事情 最新版本的 jQuery 现已弃用 browser物体代替 support 但是 如果出现仅影响 IE 而不是其他浏览器的错误或问
  • 该项目已在选定位置处于源代码管理之下

    如何将 Visual Studio 解决方案添加到 TFS 例如 我创建了一个名为 PROJECTX 的新项目 并且我有名为 PROJECTX sln 的解决方案 我选择File gt Source Control gt Add Solut
  • Matlab立体相机标定场景重建错误

    I am trying to use the Computer Vision System Toolbox to calibrate the pair of cameras below in order to be able to gene
  • Gradle:“buildTypes”无法应用于 groovy.lang.Closure [重复]

    这个问题在这里已经有答案了 改变后targetSdkVersion and compileSdkVersion到22 并改变我的buildToolsVersion到22 0 1 我不断收到以下错误 buildTypes 不能应用于 groo
  • Select2 ajax不显示结果

    我正在使用 select2 和 ajax 来查询我的数据库中特定分类下的术语 但是当我搜索时 搜索框只是挂在 搜索 上而不检索任何结果 这是我的html
  • 为什么MySQL“插入...选择...”比单独选择慢得多?

    我正在尝试将查询结果存储在临时表中以供进一步处理 create temporary table tmpTest a FLOAT b FLOAT c FLOAT engine memory insert into tmpTest select
  • 如何将 boost::bind 对象传递给函数?

    我有一个一维函数最小化器 现在我正在向它传递函数指针 然而 许多函数有多个参数 其中一些参数是固定的 我已经使用像这样的函子实现了这个 template
  • 如果数组包含重复项则进行二分查找

    Hi 如果我们使用二分搜索在以下数组中搜索 24 则搜索键的索引是多少 array 10 20 21 24 24 24 24 24 30 40 45 我对二分搜索有疑问 如果数组有重复值 它是如何工作的 任何人都可以澄清吗 您建议的数组在中