首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当未找到目标时,我的二进制搜索函数返回none,尽管我将返回值指定为-1

对于给定的问题,我可以给出以下答案:

该问题描述了一个二进制搜索函数,当未找到目标时,函数返回的值是none,尽管该函数的返回值应该是-1。

二进制搜索是一种查找算法,用于在有序数组或列表中查找特定元素的位置。它通过重复地将目标值与数组的中间元素进行比较,并根据比较结果将搜索范围缩小一半,直到找到目标值或确定目标值不在数组中。

该函数的问题在于,当未找到目标值时,返回值被指定为none,而不是应该返回的-1。这可能导致使用该函数的其他代码逻辑错误。

为了解决这个问题,我们应该将函数的返回值指定为-1,以便与二进制搜索算法的约定相符。

以下是一个示例的二进制搜索函数的代码:

代码语言:txt
复制
def binary_search(arr, target):
    low = 0
    high = len(arr) - 1

    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1

    return -1

在这个示例中,函数接受一个有序数组arr和目标值target作为参数,并返回目标值在数组中的索引。如果未找到目标值,则返回-1。

该函数的时间复杂度为O(log n),其中n是数组的长度。它是一种高效的查找算法,常用于需要快速查找有序数据的场景。

如果您在使用腾讯云,我推荐您使用腾讯云的云服务器(CVM)来运行您的二进制搜索函数。云服务器是一种灵活、可扩展的云计算服务,可以提供高性能的计算资源。您可以通过以下链接了解更多关于腾讯云云服务器的信息:腾讯云云服务器

请注意,本回答仅供参考,并没有提及任何具体的云计算品牌商,如有需要请自行参考相关资料。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python open函数详解「建议收藏」

b代表以二进制方式读写,读写以字节为单位,可以用于读写所有类型文件。这里注意一下,若使用t方式,则必须将encoding参数指定为None以外值。...buffering若为1,则表示缓冲区采用行缓冲区,即只能放一行数据,遇到换行符即清空缓存,数据写入磁盘。buffering为大于1正整数,这个正整数即代表缓冲区大小,单位为字节。...mode参数采用文本方式情况下,若encoding指定为None,则编码为locale.getpreferredencoding(False)这行代码返回值。...在Windows下,这行代码一般返回值为cp936,。cp936就是gbk。 errors:编解码报错处理模式,可选,str类型,默认为None。...用于设置open函数发生编码或解码错误时处理方式。注意,仅mode参数采用文本方式时有效,二进制方式下不可指定。

1.9K20

神了,Excel这个操作今天才知道

2 - 执行依赖于 lookup_array 按升序排序二进制搜索。 如果未排序,返回无效结果。 -2 - 执行依赖于 lookup_array 按降序排序二进制搜索。...table_array:必选参数,VLOOKUP 在其中搜索 lookup_value 和返回值单元格区域。...col_index_num:包含返回值列号(从1开始table_array最左侧列)。...IF(判断条件,判断条件为真返回什么,判断条件为假返回什么) IF({0,1},C12:C18,D12:D18) {0,1}取0返回 D12:D18,取1返回C12:C18, 最终返回一个新区域...vlookup匹配查找只支持从上往下查找,查询区域中我们目标值出现多次时候,我们用vlookup永远只能得到第一个出现目标值(特殊处理方法这里我们不考虑),而xlookup则提供了多种查找方式

2K20
  • 精确度 召回率 f1_score多大了

    normalize为True,最好表现是score为1normalize为False,最好表现是score未样本数量....Micro Average 微平均是计算多分类指标赋予所有类别的每个样本相同权重,所有样本合在一起计算各个指标。...P-R曲线上一个点代表着,在某一阈值下,模型大于该阈值结果判定为正样本,小于该阈值结果判定为负样本,此时返回结果对应召回率和精确率。整条P-R曲线是通过阈值从高到低移动而生成。...原点附近代表阈值最大模型精确率和召回率。 关于P-R曲线,因为自己使用比较少,所以这里就不深入给大家说了。...sklearn中f1_score方法和precision_score方法、recall_score方法参数说明都是一样,所以这里不再重复,只是把函数返回值说明贴在下面: 计算F1 score,它也被叫做

    91420

    offer | 面试题31:数组中出现次数超过一半数字

    数组排序法:数组nums 排序,数组中点元素一定为众数。 摩尔投票法:核心理念为票数正负抵消。此方法时间和空间复杂度分别为O(N)和0(1),为本题 最佳解法。...发生票数和= 0,剩余数组众 数-定不变,这是由于: n1=x:抵消所有数字中,有一半是众数x。 n1≠x:抵消所有数字中,众数x数量最少为0个,最多为一半。...= x ,票数 votes 自减 1返回值返回 x 即可; 复杂度分析: 时间复杂度 O(N) : N 为数组 nums 长度。...若 x 数量超过数组长度一半,则返回 x ; 否则,返回未找到众数; 时间和空间复杂度不变,仍为 O(N)和 O(1) 。...x : 0; // 无众数返回 0 } /****************** 剑offer **********************/ /** * 思路:首次出现

    41960

    SHELL(bash)脚本编程六:执行流程

    敲击键盘,字符会存入Readline编辑缓冲区,Readline会处理输入变化并及时地结果显示到终端上。 Readline还要保持命令提示符(prompt)稳定(比如提示符颜色)。...复合命令 bash中每种复合命令都使用一个C函数来实现,功能包括执行恰当展开(如for循环中关键词in后面的单词),执行特定命令,根据命令返回值来变更执行流程等等。...3、如果未找到函数,则搜索内置命令,如果找到,则执行该内置命令(注意内置命令eval会使其后所有单词再次经过解析、扩展和执行)。...5、如果hash表中无缓存记录,则搜索环境变量PATH值中所有目录内文件,如果找到该名称文件,则执行(并缓存至hash表);如果未找到,则返回错误信息,设置返回值为127并exit。...7、执行完毕后,bash收集命令返回值。 这些,就是bash执行命令整个流程。

    1.7K40

    C语言string.h所有函数汇总

    复制就像使用了中间缓冲区一样,允许目标和源重叠。源指针和目标指针指向对象基础类型与此函数无关;结果是数据二进制副本。该函数不检查源中任何终止空字符 - 它总是准确地复制字节数。...如果未找到该值,该函数返回空指针。...返回值Return Value指向 str 中第一次出现 character 指针。如果未找到 character,则该函数返回空指针。...搜索包括终止空字符。因此,如果在 str1 中找不到 str2 任何字符,该函数返回 str1 长度。参数Parametersstr1要扫描 C 字符串。...返回值Return Value指向 str 中最后一个出现字符指针。如果未找到该字符,则该函数返回一个空指针。

    73400

    【熟视C语言】如何快速了解一个库函数(C语言讲解,以string.h中部分库函数为例)

    当然,在这之后还有一个最好方法,也就是本篇文章重头戏——模拟实现库函数。接下来逐个讲解并模拟实现一部分string.h中函数。...函数返回一个char*地址,为复制目标的地址,通过这个地址可以访问得到复制成功后内容 函数'\0'计入长度并参与复制,空间重叠存在循环,说明是'\0'在控制循环 代码实现: char* strcpy_simulation...函数返回值一个整型值,这个返回值是由两个字符串关系决定两个字符串相同时则返回0,而不相同时大于0则说明第一个字符串比第二个字符串值更大,小于0则更小,而这个值其实是比较遇到第一个不相同字符比较...该函数从两个字符串第一个字符开始比较是否相等,遇到比较到不同字符或者遇到终止字符'\0'停止比较,并且这个函数比较是字符二进制值(参考ascii码值表)。...返回值为char*,如果str2向字符串在str1向字符串中有出现,则该返回指向str1中出现str2所字符串内容位置指针,如果没有出现则返回空指针。

    28210

    数组查找:让你快速找到想要元素!

    其输入参数为一个整数数组和需要查找目标值。函数通过遍历数组中每一个元素,判断该元素是否等于目标值,如果等于则返回该元素下标,否则返回-1表示目标未找到。...首先判断left是否大于right,如果是,返回-1,表示未找到目标值。否则,数组分成两半,计算中间位置mid。如果中间位置值等于目标值,返回mid。...然后通过调用二分查找方法binarySearch来查找数组中是否存在值为target元素。如果binarySearch方法返回值不等于-1,则说明找到了目标元素,否则未找到目标元素。...hashSearch搜索函数,在搜索函数中使用了哈希表思想来定位目标元素是否存在于数组中。...:目标元素left:查找范围左边界right:查找范围右边界返回值:如果找到目标元素,则返回其在数组中索引值;如果未找到目标元素,则返回 -1

    28921

    【投稿】Rust 中生命周期 —— 从 StrSplit 实例说开去

    ["a", "b", "c", "d", "e"]);} next() 实现很简单: 1、在字符串中查找分隔符第一次出现位置,如果找到返回索引值 Some(usize),未找到返回 None; 2、...; 2、在待处理字符串中查找分隔符 存在分隔符,得到分隔符第一次出现索引位置,根据索引字符串分为三个部分,第一部分为此次调用返回值,第二部分为分隔符,第三部分为下一次调用 next() 待处理字符串...找到,返回 (分隔符开始索引, 分隔符结束索引+1) // 2)未找到返回 None fn find_next(&self, s: &str) -> Option<(usize,...实现功能为,在字符串中搜索匹配 Pattern,返回匹配到字符串开始索引 Some(usize);未找到返回 None。...找到,返回 (分隔符开始索引, 分隔符结束索引+1) // 2)未找到返回 None fn find_next(&self, s: &str) -> Option<(usize,

    1.7K30

    实战记录—PHP使用curl出错输出错误信息

    CURL状态码列表 状态码 状态原因 解释 0 正常访问 1 错误协议 未支持协议。...17 设置传输模式为二进制 FTP 无法设定为二进制传输。无法改变传输方式到二进制。 18 文件传输短或大于预期 部分文件。只有部分文件被传输。...39 LDAP搜索失败 LDAP 搜索失败。 41 函数没有找到 功能无法找到。无法找到必要LDAP 功能。 42 中止回调 由回调终止。应用程序告知cURL 终止运作。...49 TELNET格式错误 不合式telnet 选项。 51 远程服务器SSL证书 peer SSL 证书或SSH MD5纹没有确定。...52 服务器无返回内容 服务器无任何应答,该情况在此处被认为是一个错误。 53 加密引擎未找到 找不到SSL 加密引擎。 54 设定默认SSL加密失败 无法SSL 加密引擎设置为默认。

    6K50

    使用python制作一个批量查询搜索排名SEO免费工具

    # 返回排名(从1开始) return -1 # 如果未找到网站,返回-1 except requests.exceptions.RequestException...函数目标是获取指定关键词在谷歌搜索结果中排名。 在函数内部,首先构建了一个URL,该URL使用指定关键词进行谷歌搜索。然后设置了一个User-Agent头部,模拟一个浏览器请求。...接着使用enumerate函数遍历搜索结果列表,并使用result.find('a')['href']获取每个搜索结果中链接。如果指定网站域名出现在链接中,就返回当前排名(从1开始计数)。...如果循环结束后未找到指定网站域名,函数返回-1,表示未找到网站。...如果返回排名不为None,则根据排名值进行条件判断,如果排名为-1,打印关键词没有排名消息,否则打印关键词排名信息。 以上就是整段代码含义和逻辑。

    25240

    码如其人,同学你能写一手漂亮Python函数

    一个函数可以被删除,事情就好办了:如果其他地方发生改动,不再需要该函数单一功能,那么只需将其删除。 举个例子来解释一下。...即使你尝试创建一个不会返回值函数,我们也不能选择不在内部采用返回值,因为 Python 解释器会强制返回一个 None。...以下是人们在被问及为什么他们写函数没有返回值给出一些常见原因: 「函数所做就是类似 I/O 操作,例如一个值保存到数据库中,这种函数不能返回有用输出。」...并不同意这种观点,因为在操作成功完成函数可以返回 True。 「需要返回多个值,因为只返回一个值并不能代表什么。」 当然也可以返回包含多个值一个元组。...以下展示了非幂等函数示例: 这函数不是幂等,因为函数返回值依赖于 I/O,即用户输入数字。每次调用这个函数,它都可能返回不同值。

    58030

    码如其人,同学你能写一手漂亮Python函数

    一个函数可以被删除,事情就好办了:如果其他地方发生改动,不再需要该函数单一功能,那么只需将其删除。 举个例子来解释一下。...即使你尝试创建一个不会返回值函数,我们也不能选择不在内部采用返回值,因为 Python 解释器会强制返回一个 None。...甚至希望发表以下声明:每一个函数都应该返回一个有用值,即使这个值仅可用来测试。我们写代码应该需要得到测试,而不带返回值函数很难测试它正确性,上面的函数可能需要重定向 I/O 才能得到测试。...以下是人们在被问及为什么他们写函数没有返回值给出一些常见原因: 「函数所做就是类似 I/O 操作,例如一个值保存到数据库中,这种函数不能返回有用输出。」...并不同意这种观点,因为在操作成功完成函数可以返回 True。 「需要返回多个值,因为只返回一个值并不能代表什么。」 当然也可以返回包含多个值一个元组。

    49220

    码如其人,同学你能写一手漂亮Python函数

    一个函数可以被删除,事情就好办了:如果其他地方发生改动,不再需要该函数单一功能,那么只需将其删除。 举个例子来解释一下。...即使你尝试创建一个不会返回值函数,我们也不能选择不在内部采用返回值,因为 Python 解释器会强制返回一个 None。...以下是人们在被问及为什么他们写函数没有返回值给出一些常见原因: 「函数所做就是类似 I/O 操作,例如一个值保存到数据库中,这种函数不能返回有用输出。」...并不同意这种观点,因为在操作成功完成函数可以返回 True。 「需要返回多个值,因为只返回一个值并不能代表什么。」 当然也可以返回包含多个值一个元组。...以下展示了非幂等函数示例: 这函数不是幂等,因为函数返回值依赖于 I/O,即用户输入数字。每次调用这个函数,它都可能返回不同值。

    45620

    Python内置函数和匿名函数

    参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认值。传入了 source参数,filename参数传入空字符即可。 ...source中包含流程语句 ,model应指定为‘exec’;source中只包含一个简单求值表达式,model应指定为‘eval’; source中包含了交互式命令语句,model应指定为'...(a)) # 没有实现 __call__, 返回 False 查看内置属性 dir:函数不带参数返回当前范围内变量、方法和定义类型列表;带参数返回参数属 性、方法列表。...print(complex(1,2)) print(complex(1)) print(complex("1")) print(complex("1+2j")) 进制转换(3个): bin:十进制转换成二进制返回...(calc(10)) 匿名函数格式说明 函数名 = lambda 参数 :返回值,实参 参数可以有多个,用逗号隔开 匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后内容就是返回 返回值和正常函数一样可以是任意数据类型

    1.2K30

    几种常见Runtime Exception

    摘要:一,error和exception区别,RuntimeException和非RuntimeException区别1.异常机制 异常机制是程序出现错误后,程序如何处理。...传统处理异常办法是,函数返回一个特殊结果来表示出现异常(通 一,error和exception区别,RuntimeException和非RuntimeException区别 1....传统处理异常办法是,函数返回一个特殊结果来表示出现异常(通常这个特殊结果是大家约定俗称),调用该函数程序负责检查并分析函数返回结果。...这样做有如下弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确就会出现混淆;可读性降低,程序代码与处理异常代码混爹在一起;由调用函数程序来分析错误,这就要求客户程序员对库函数有很深了解...3 异常使用方法 声明方法抛出异常 ① 语法:throws(略) ② 为什么要声明方法抛出异常? 方法是否抛出异常与方法返回值类型一样重要。

    1.2K20

    【C语言加油站】内存函数

    返回值是什么呢? 从memcpy函数介绍中我们不难发现,在memcpy中,函数返回值目标空间地址,因此在我们模拟实现my_memcpy函数中同样可以目标空间地址返回。...为了确保返回目标空间其实地址,我们可以在开始拷贝前,先将目标空间起始地址记录下来,最后在拷贝结束后起始地址返回函数,如下所示: //memcpy模拟实现 void* my_memcpy(void...要解决这个问题,我们首先需要思考清楚是哪一部分有重叠,如下所示: 不难发现,源空间在前,目标空间在后,重叠空间为源空间后侧与目标空间前侧;目标空间在后,源空间在前,重叠空间则为源空间前侧与目标空间后侧...最后是函数返回值——返回指向value指针。这个我们并不陌生了,在前面实现memcpy时候我们就有介绍过对于void*类型函数函数结束,需要给函数返回一个地址,这里就不再继续展开。...,一个超过整型范围内值要存入整型中,会出现算术溢出问题,溢出后,就会发生截断,截断会保留低位整型值而舍弃高位溢出值,因此我们就会得到最大值+1变为最小值,最小值-1变为最大值结果。

    11510
    领券