python中的二分查找算法

2024-01-21

我正在尝试用 python 实现二分搜索,并将其编写如下。但是,只要needle_element大于数组中的最大元素,我就无法让它停止。

你能帮我吗?谢谢。

def binary_search(array, needle_element):
    mid = (len(array)) / 2
    if not len(array):
        raise "Error"
    if needle_element == array[mid]:
        return mid
    elif needle_element > array[mid]:
        return mid + binary_search(array[mid:],needle_element)
    elif needle_element < array[mid]:
        return binary_search(array[:mid],needle_element)
    else:
        raise "Error"

与一个人一起工作会更好lower and upper索引为莱塞诉卡尔森在对该问题的评论中提出建议。

这将是代码:

def binary_search(array, target):
    lower = 0
    upper = len(array)
    while lower < upper:   # use < instead of <=
        x = lower + (upper - lower) // 2
        val = array[x]
        if target == val:
            return x
        elif target > val:
            if lower == x:   # these two are the actual lines
                break        # you're looking for
            lower = x
        elif target < val:
            upper = x
  • lower < upper一旦您到达较小的数字(从左侧开始),就会停止
  • if lower == x: break一旦您达到更高的数字(从右侧)就会停止

Example:

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

python中的二分查找算法 的相关文章

  • 需要根据数据框中的行号应用不同的公式

    我正在努力在数据框中找到某种移动平均值 该公式将根据正在计算的行数而变化 实际场景是我需要计算Z列 Edit 2 以下是我正在使用的实际数据 Date Open High Low Close 0 01 01 2018 1763 95 176
  • 函数名称未定义

    我有一段代码 看起来像这样 if name main main def main print hello 但是 当我尝试运行此代码时 出现错误 NameError 名称 main 未定义 我是否没有在函数 def main 的第一行定义名称
  • 在 SQLAlchemy 中,过滤器是在连接之前还是之后应用?

    使用 SQLAlchemy 我执行如下查询 import models as m import sqlalchemy as sa s session maker q s query m ShareCount m Article join m
  • 在 Python 中延迟转置列表

    所以 我有一个延迟生成的可迭代的三元组 我试图弄清楚如何将其转换为 3 个可迭代对象 分别由元组的第一个 第二个和第三个元素组成 然而 我希望这件事能懒惰地完成 所以 举例来说 我希望 1 2 3 4 5 6 7 8 9 将变成 1 4 7
  • 如何在Python + Selenium中获取元素的值

    我在我的 Python 3 6 3 代码中得到了这个 HTML 元素 作为 Selenium网页元素当然 span class ocenaCzastkowa masterTooltip style color 000000 alt 5 sp
  • 在Python中将大文件(25k条目)加载到dict中很慢?

    我有一个大约有 25000 行的文件 它是 s19 格式的文件 每行就像 S214780010 00802000000010000000000A508CC78C 像这样的事情怎么样 我做了一个测试文件 只有一行S21478001000802
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • 无法使用Python请求会话模块登录网站

    我刚刚开始进行网络抓取 对于我的第一个项目 我尝试使用 requests Session 登录 artofproblemsolving com 并访问另一个用户的帐户 这是我的代码 import requests LOGIN URL htt
  • 对法语文本进行词形还原[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些法语文本需要以某种方式进行处理 为此 我需要 首先 将文本标记为单词 然后对这些单词进行词形还原以避免多次处理相同的词根 据我
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • 机器学习的周期性数据(例如度角 -> 179 与 -179 相差 2)

    我使用 Python 进行核密度估计 并使用高斯混合模型对多维数据样本的可能性进行排名 每一条数据都是一个角度 我不确定如何处理机器学习的角度数据的周期性 首先 我通过添加 360 来删除所有负角 因此所有负角都变成了正角 179 变成了
  • 在python中使用编解码器utf-8打开文件错误

    我在 windows xp 和 python 2 6 4 上执行以下代码 但它显示 IOError 如何打开名称带有 utf 8 编解码器的文件 gt gt gt open unicode txt euc kr encode utf 8 T
  • Python GTK3 Treeview 向上或向下移动选择

    如何在树视图中向上或向下移动所选内容 我的想法是 我可以使用向上和向下按钮将选择向上移动一行或向下移动一行 我的 Treeview 使用 ListStore 不确定这是否重要 首先 我将使用我熟悉的 C 代码 如果您在将其翻译为 Pytho
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中
  • 为数据集生成随机 JSON 结构排列

    我想生成 JSON 结构的许多不同排列作为同一数据集的表示 最好不需要对实现进行硬编码 例如 给定以下 JSON name smith occupation agent enemy humanity nemesis neo 应该产生许多不同
  • 尝试 numba 时出现巨大错误

    我在使用 numba 时遇到了大量错误 讽刺的是 正确的结果是在错误之后打印的 我正在使用最新的 Anaconda python 并安装了 numba conda install numba 一次在 Ubuntu 13 64 位和 anac
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价

随机推荐

  • Java可以删除到回收站吗?

    Java是这里的关键 我需要能够删除文件 但用户希望能够从回收站 取消删除 据我所知这是不可能的 还有人知道吗 十年后 Java 9 终于提供了一种将文件移动到垃圾箱的内置方法 java awt Desktop moveToTrash ja
  • AWS Transcribe Streaming BadRequestException:“无法解码音频流...”

    我正在使用 Websockets 在 Dart Flutter 中构建一个 Transcribe Streaming 应用程序 当我流式传输测试音频 从单声道 16kHz 16 位签名的小端 WAV 文件中提取 时 我得到 BadReque
  • 覆盖身份验证失败处理程序 - Symfony2

    我正在扩展身份验证失败处理程序 一切都主要工作正常 但有一个小问题 这是我的 services yml http utils class class Symfony Component Security Http HttpUtils aut
  • 如何使用 css3 校正鱼眼全景图?

    我觉得是时候将我的 Flash 全景图转换为 js html5 css3 了 我见过一些使用单独的平面图像的优雅解决方案 但我的都是鱼眼 我的直觉告诉我 使用 webkit transform matrix3d 是可行的 但我不太喜欢它 如
  • 在 Android 上运行 Perl 脚本

    我需要运行 Perl 脚本 ishybrid pl http manpages ubuntu com manpages natty man1 isohybrid pl 1 html 来自我的 Android 应用程序 我碰到perl and
  • 更改 FontAwesome 图标与悬停时的文本

    我正在尝试为我的网站创建响应式功能 基本上我想要的是有很棒的字体图标用于导航 但是在计算机上如果将鼠标悬停在图标上 它就会变成一个单词 我已经通过 CSS 尝试过 使用a content 进而a hover content 我以前从未尝试过
  • C#/.NET 4.0 中新的 NoPIA 和类型等效功能是否意味着不再需要 Microsoft.mshtml.dll

    我正在维护一个基于 WPF 的应用程序 其中包含一个基于 WinForms 的 WebBrowser 控件 该控件基于 IE Web 浏览器控件 当我们部署时 我们还必须提供微软 mshtml dll并为我们的 ClickOnce 发布流程
  • cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize

    这三个函数 特别是最后两个函数有什么区别 图书馆手册说 请注意 此函数已被弃用 因为它的名称不 反映其行为 它的功能类似于 未弃用的函数 cudaDeviceSynchronize 应使用 反而 但不太确定这是什么意思 这些都是barrie
  • AngularJs 中隐藏的可见性?

  • Android Studio 1.1.0 中变量值更改中断?

    我知道我可以在代码更改变量的每一行设置一个断点 但是是否有一个选项 例如右键单击变量 添加到监视 该选项会在变量更改值时停止 我认为C 有这个选项 看到这个 https stackoverflow com questions 871328
  • 如何设置浏览器滚动条滚动页面的一部分?

    我在一些网站上看到过这样做 一个例子是artofadambetts com http www artofadambetts com weblog p 169 页面上的滚动条仅滚动页面的一个元素 而不是整个页面 我查看了来源 但还没有弄清楚
  • 在 data.table 中使用不同的列嵌套 ifelse

    我需要计算 a 的某些列的每一行的 最佳值 data table 每行的最佳值是按选定列的给定顺序排列的第一个非 NA 列的值 根据要求 要包含的列可能会因顺序或数量而异 此外 应为每行存储提供最佳值的列的名称 示例数据 With libr
  • Jquery UI 可删除

    Jquery UI droppable 是否能够与计算机内的文件交互 假设我的电脑上有一个图像文件 而不是在webpage我尝试将其放在上面并触发一个简单的警报来通知 仅使用 Jquery UI 可以吗 对于您所描述的内容 请使用HTML5
  • Eclipse:缺少 Eclipse 应用程序启动配置

    我想在 eclipse 的运行 调试配置中选择 Eclipse 应用程序启动配置 用于运行 eclipse 插件 但它不存在 如何在运行 调试配置中添加 Eclipse 应用程序启动配置 我正在使用面向 Java 开发人员的 Eclipse
  • 如何将十六进制转换为十进制?

    我有不同的十六进制数据传入并存储到整数类型寄存器中 当我使用 fprint 时 我可以看到以下内容 0x3076 0x307c 但是 我想显示上述十六进制数据的十进制版本 如下所示 12406 12412 理论上 假设对于第一个值 您可以执
  • 无法将 FTP 连接到 Azure 虚拟机

    我在 Azure 中配置了 Windows Server 2012 虚拟机 当我尝试通过 FileZilla FTP 客户端连接到它时 我得到一个Could not connect to server error 到目前为止 这是我尝试过的
  • Angular.js 更新指令中的 SVG 模板

    不久前我问过 Angular js 在指令中渲染 SVG 模板 https stackoverflow com questions 19568226 angular js rendering svg templates in directi
  • 稳定基线不适用于张量流

    因此 我最近重新回到机器学习领域 并决定开始 ConnectX 的 Kaggle 课程 https www kaggle com learn intro to game ai and reinforcement learning https
  • 如何将 C# 中的标签添加到 XAML 代码中的网格中?

    我有这个模板
  • python中的二分查找算法

    我正在尝试用 python 实现二分搜索 并将其编写如下 但是 只要needle element大于数组中的最大元素 我就无法让它停止 你能帮我吗 谢谢 def binary search array needle element mid