如何计算二分查找复杂度

2023-11-26

我听到有人说,由于二分搜索将搜索所需的输入减半,因此它是 log(n) 算法。因为我不是数学背景的,所以我无法理解它。有人可以更详细地解释一下吗?它与对数级数有什么关系吗?


这是一种更数学的方式来看待它,尽管并不复杂。 IMO 比非正式的更清晰:

问题是,你能将 N 除以 2 多少次直到得到 1?这本质上是说,进行二分搜索(一半元素)直到找到它。用公式表示是这样的:

1 = N / 2x

multiply by 2x:

2x = N

now do the log2:

log2(2x)    = log2 N
x * log2(2) = log2 N
x * 1         = log2 N

这意味着您可以将 log N 次除以,直到将所有内容都除掉。这意味着您必须除以 log N(“执行二分搜索步骤”),直到找到您的元素。

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

如何计算二分查找复杂度 的相关文章

  • 将 n 个可变高度图像拟合为 3 个(相似长度)列布局

    我正在寻找类似于的 3 列布局piccsy com http piccsy com 给定许多宽度相同但高度不同的图像 有什么算法可以对它们进行排序以使列长度的差异最小 最好使用 Python 或 JavaScript 非常感谢您提前的帮助
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • 如何在大空间尺度上加速A*算法?

    From http ccl northwestern edu netlogo models community Astardemo http ccl northwestern edu netlogo models community Ast
  • Python 将字符串组合成尽可能短的字符串?

    如果我有一个字符串列表 我想将它们组合成一个具有重叠字符的字符串 如果没有剩余的重叠字符串 请将其添加到末尾 这是一个过于简化的版本 input one two output twone 我正在寻找一种方法来对输入列表中的任意数量的字符串执
  • java 谷歌自定义搜索API

    我正在尝试使用Google 自定义搜索 api 的 java 客户端 http javadoc google api java client googlecode com hg apis customsearch index html但在网
  • 模式识别算法

    过去我必须开发一个充当规则评估器的程序 你有一个先行词和一些后续词 动作 所以如果先行词评估为真 则执行的动作 当时我用的是修改版RETE算法 http en wikipedia org wiki Rete algorithm RETE 有
  • 获取所有ios应用程序的全局列表[重复]

    这个问题在这里已经有答案了 我想对苹果应用商店进行一些全球统计 一个瓶颈是至少获取所有当前活动应用程序的 ID 这 9 位数字 有谁知道如何获取 iOS 应用商店中当前活动应用程序的所有 id 的完整列表 更好的是特定类别的所有 ID 例如
  • 找到一个恰好出现了 N/2 次的数字

    这是我的面试问题之一 给定一个包含 N 个元素的数组以及元素出现的位置正好 N 2次 其余 N 2 个元素是unique 您如何找到运行时间更好的元素 请记住 元素未排序 您可以假设 N 是偶数 例如 input array 10 2 3
  • std::__gcd 和 std::gcd 有什么区别?

    Many https www geeksforgeeks org stdgcd c inbuilt function finding gcd websites https codeforces com submissions Madiyar
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • 哪种算法可以有效地找到路径一定距离内的一组点?

    给定一组点s 一组 x y 坐标 和由连接一组点的线段组成的路径l 描述一种有效的算法 可用于从s在指定距离内d路径的l 其实际应用可能是查找沿城市之间的公路旅行路径 10 英里内任意位置的餐馆列表 For example in the f
  • 二分查找问题? [复制]

    这个问题在这里已经有答案了 可能的重复 实施二分查找有哪些陷阱 https stackoverflow com questions 504335 what are the pitfalls in implementing binary se
  • grep 查找 Unix 中的特殊字符

    我有一个日志文件 application log 其中可能包含以下多行普通和特殊字符字符串 Q 我想搜索包含这个特殊字符串的行号 grep Q application log 上述命令不返回任何结果 获取行号的正确语法是什么 Tell gr
  • 数字总和直到作为输入给出的数字

    如果给出一个数字作为输入 则找到该数字之前所有数字的总和 例如输入 11 则答案为 1 2 9 1 0 1 1 蛮力方法是计算所有小于某个数字的数字的数字之和 我已经实现了该方法 我想知道是否有其他方法可以在不实际计算每个数字的数字之和的情
  • 如何改进 PHP 分页算法?

    我正在研究 PHP 中的分页算法 我可以猜测它需要改进的空间 所以我想对如何改进它有一些想法 无论是从 UI UX 的角度清理代码本身 还是你能想到的任何其他东西 该算法应输出如下所示的分页 1 2 3 6 7 8 97 98 99 or
  • 查找重叠间隔序列中最大和的算法

    我试图解决的问题在数轴上有一个间隔列表 每个间隔都有一个预定义的分数 我需要返回最大可能的总分 问题是间隔重叠 并且重叠间隔中我只能使用一个 这是一个例子 Intervals Score 0 5 15 4 9 18 10 15 12 8 2
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4
  • 如何找到给定顶点的所有多边形?

    我有一个顶点列表 并且我知道它们之间的连接 我试图找到顶点的所有多边形形状 这些多边形形状不应重叠 我做了一些研究 我认为如果我可以顺时针 或逆时针 没有区别 遍历顶点 我可以检测多边形形状 因此 我寻找顺时针遍历顶点的解决方案 我发现了一
  • 变量的多个值介于 0 和数字序言之间

    所以我一直在尝试自学序言 我认为我进展顺利 然而 我有点坚持我正在尝试的这一种方法 toN N A A 等于 0 到 N 1 之间的整数值 按升序生成 所以 toN 5 A 将是 A 0 A 1 A 2 A 3 A 4 我对序言还很陌生 所
  • 证明字符串算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 使用变量作为键访问 Ruby 哈希

    如果我有以下 ruby 哈希 environments testing gt 11 22 33 44 production gt 55 66 77 88 我如何访问上述哈希的部分内容 下面的例子说明了我想要实现的目标 current env
  • Discord 机器人 - “属性错误:‘NoneType’对象没有属性‘strip’。

    我是一名新编码员 我一直在关注tutorial关于如何使用下面的代码创建一个不和谐的机器人 实际上已经直接从教程中复制了代码 并且我创建了一个 env 文件来存储我的 AuthToken 每次运行代码时 我都会收到上述代码下方的错误 有小费
  • 未找到 Android Studio Gradle DSL 方法:“android()”--错误(17,0)

    我尝试在 Android Studio 中运行我的项目 但出现以下错误 我跟踪了许多消息来源只是为了让它运行并最终来到这里 但不知道还能做什么 我该如何配置这个项目来运行 构建 gradle Top level build file whe
  • gdb 通过走帧指针进行回溯

    有时会出现一些小的堆栈损坏 导致 gdb 无法执行 回溯 我创建了以下 gdb 宏 x86 64 可以轻松地使其适用于 x86 该宏取决于关闭 omit frame pointer 即 fno omit frame pointer 并向我展
  • Python拒绝多次迭代文件中的行[重复]

    这个问题在这里已经有答案了 我正在编写一个程序 需要我多次迭代文件的每一行 loops 0 file open somefile txt while loops lt 5 for line in file print line loops
  • 使用 php 更改 css 值

    如何更改在我的主页上从管理区域显示一些文本的 div 的 css 我希望当我在插件管理页面中输入颜色代码时 该代码会在 css 文件中更新 这是很平常的事 却无法把握 这是我的 div 的 css div background 0000 这
  • 如何在 PHP 中使用 Graph API 使用 message_tags 字段发布消息

    我想使用 Graph API 发布带有 message tags 的消息 我确认消息仅在 PHP 中发布 但不适用于 message tags 这是示例代码
  • javascript - 为什么有同步和异步模块的规范?

    我刚刚读完这篇文章article在 Javascript 模块上 我可以理解CommonJS模块是同步加载的 而AMD模块是异步加载的 我不明白的是我怎样才能模块变成神奇地同步如果我以 CommonJS 格式编写它 或者如果我以 Commo
  • 角度表单验证以验证电话号码

    我正在尝试使用角度中的正则表达式来验证电话号码 HTML 内容 div class form group row div
  • SetStdHandle 对 cout/printf 没有影响

    标题说明了一切 当我运行以下代码时 HANDLE hOut GetStdHandle STD OUTPUT HANDLE HANDLE hFile CreateFile TEXT Foo txt GENERIC WRITE FILE REA
  • Perl 中的标量上下文和列表上下文有什么区别?

    Perl 中的标量上下文和列表上下文有什么区别 这在其他语言 例如 Java 或 Javascript 中是否有相似之处 Perl 中的各种运算符都是上下文相关的 并且在列表和标量上下文中产生不同的结果 例如 my array 1 2 4
  • 强制对 js 或 axios 使用不同的用户代理

    我通过 axios get 和 post 请求路由所有请求 我正在测试一些 iframe 它们检测用户代理 并根据它是什么代理 它们更改有效负载和样式等 例如 如果我通过切换设备工具栏并设置为 iphone 在开发工具上更改它 则所有请求都
  • XMLHttpRequest 从远程主机获取 HTTP 响应

    为什么下面的代码基于 Mozilla 示例不起作用 尝试使用 Firefox 3 5 7 和 Chrome
  • 如何查看除特定控件之外的所有 FormControls ValueChanges?

    我有一个表单 每当控制输入值发生变化时就会进行计算 这是我的form group好像 form group this fb group control1 control2 control3 control10 我可以通过以下方式检测所有控件
  • C# 默认参数

    对于某人来说 这可能是一个非常简单的答案 我有一个方法Optional Parameter像这样 public static Email From string emailAddress string name var email new
  • 返回指向局部变量的指针[重复]

    这个问题在这里已经有答案了 我不知道为什么这有效 由于 x 是一个局部变量 我认为当我尝试返回它时会收到错误 然而 第一个 printf 工作正常 但随后它只打印出 0 任何人都可以解释这里发生了什么吗 include
  • 方向改变时不调用 onCreateLoader

    我的问题与此基本相同 有时调用initLoader后没有得到onCreateLoader回调 我有2个ListFragments包含在一个ViewPager 它们一开始加载正常 但是当我改变方向时 initLoader方法不调用onCrea
  • 在这些情况下,Scala 值类将被“装箱”,对吧?

    如果我有这个值类 class ActionId val value Int extends AnyVal 那么 在下面的所有示例中 都会为值类分配一个对象吗 它将被 装箱 它将not只需将其解包为普通的 32 位整数 对吧 返回值类的函数
  • OpenCV python 的 API:FlannBasedMatcher

    我正在尝试重写所描述的代码here 使用 Opencv 的 python API 代码的第 3 步有以下几行 FlannBasedMatcher matcher std vector lt DMatch gt matches matcher
  • 如何计算二分查找复杂度

    我听到有人说 由于二分搜索将搜索所需的输入减半 因此它是 log n 算法 因为我不是数学背景的 所以我无法理解它 有人可以更详细地解释一下吗 它与对数级数有什么关系吗 这是一种更数学的方式来看待它 尽管并不复杂 IMO 比非正式的更清晰