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

为什么我的二进制搜索总是返回-1

二进制搜索是一种高效的搜索算法,用于在有序数组中查找特定元素的位置。它的工作原理是将数组分成两半,然后确定目标元素可能存在的那一半,并继续将该子数组分成两半,直到找到目标元素或确定目标元素不存在为止。

如果你的二进制搜索总是返回-1,可能有以下几个原因:

  1. 数组未排序:二进制搜索要求数组是有序的,如果数组未排序,搜索结果将不准确。你可以使用排序算法(如快速排序或归并排序)对数组进行排序,然后再进行二进制搜索。
  2. 目标元素不存在:如果目标元素不在数组中,二进制搜索将返回-1。确保你正在搜索的元素确实存在于数组中。
  3. 搜索范围错误:二进制搜索要求在每一次迭代中,将搜索范围缩小一半。如果你的搜索范围设置不正确,可能导致搜索失败。确保你在每一次迭代中正确地更新搜索范围。
  4. 数组中存在重复元素:二进制搜索对于数组中存在重复元素的情况处理不佳。如果数组中存在多个与目标元素相等的元素,二进制搜索可能无法准确地确定目标元素的位置。在这种情况下,你可以考虑使用其他搜索算法,如线性搜索。

总结起来,要解决二进制搜索返回-1的问题,你需要确保数组已排序,目标元素存在于数组中,搜索范围正确,且数组中不存在重复元素。如果问题仍然存在,可能需要检查你的二进制搜索算法的实现是否正确。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云排序服务:https://cloud.tencent.com/product/sort
  • 腾讯云搜索服务:https://cloud.tencent.com/product/search
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

都服了,为啥上游接口返回汉字总是乱码?

前言 想必大家编写代码时肯定和我一样,也遇到过汉字乱码问题。特别是,有时候和上下游对接接口,不能统一编码格式的话,一堆乱码问题,让人头皮发麻。 那么为什么会有这么多乱码问题? 什么是字符编码?...但是,这是自己定义编码规则,同桌阿霄就不乐意了。他非要认为 ESC 应该定义为 1101 1000,好家伙正好和我定义二进制数字顺序相反。...不就是个编码问题吗,这种小事犯不着动手,定义一个统一规则,大家都按照规则来编码和解码不就好了嘛。 于是,ASCII 码出现了,它定义了一个常用字符集,用来表示字符和数字对应关系,如下表。...对于大于一个字节符号,假设为 n 字节,那么第一个字节前 n 位都设为 1,这样有几个 1 就说明有几个字节。然后,第 n+1 位设为0 。...细心同学可能发现了,上边转换汉字可以用 char 类型来存储,这是为什么呢? 这是因为,在 Java 中,默认使用字符集就是 Unicode,可以容纳 100 多万个字符,其中就包括汉字。

1.5K30

为什么网页总是卡?前端性能优化规则要点

一说到页面的性能优化,大家可能都会想起雅虎军规、2-5-8原则、3秒钟首屏指标等规则,这些规则在开发过程中不是强制要求,但是有时候为了追求页面性能完美和体验,就不得不对原有的代码进行修改和优化。...下面整理出一些常用性能优化要点,同时再罗列一下雅虎军规、2-5-8原则、3秒钟首屏指标这三个常用规则要点。...「首屏加载」:首屏快速显示可大大提升用户对页面速度感知,应尽量针对首屏快速显示做优化 「按需加载」:将不影响首屏资源和当前屏幕不用资源放到用户需要时才加载,可大大提升显示速度和降低总体流量(「...=no, initial-scale=1, minimum-scale=1, maximum-scale=1"> 「减少DOM节点」:DOM节点太多影响页面的渲染,尽量减少DOM节点 「优化动画」 尽量使用...」:过多font-size影响CSS树效率 「值为0时不需要任何单位」:为了浏览器兼容性和性能,值为0时不要带单位 「标准化各种浏览器前缀」 无前缀属性应放在最后 CSS动画属性只用-webkit

1.7K20

失敬,微信语音总是比一般人多 1 秒 | 晓技巧

表情,谁也拿不走 相信不少人联系列表里有用这样透明头像和透明昵称好友。...这里需要我们手动添加透明图片到自定义表情,知晓君为大家准备了两种透明图片,至于为什么是两种呢,我们准备了一个视频讲解 ? 看了这个视频你了解两种透明表情区别了吗?...接下来我们简单为大家讲解一下如何把透明图片制作成表情: 1. 在「知晓程序」公众号后台回复「常规」获得我们为你独家定制常规透明表情模板,回复「点击」获得不可点击透明表情模板。...在「」页面选择「收藏」,点击收藏页面右上角加号即可进入新建收藏页面,在这个页面中,我们可以添加相册图片、视频、语音、位置、待办事项等。点击打开相册图片,就可以选择视频进行添加了。...做好标签,有助于我们后期管理和搜索。 了解了以上小技巧,是不是已经迫不及待实操一番了?如果喜欢今天「晓技巧」,请不要吝啬你点赞、留言和分享哦!

77530

为什么程序员总是发现不了自己Bug? 程序员: 不认识他啊

因此,如何处理修复 Bug 过程也值得我们细细琢磨。 想分享一些程序员修复他们源代码时所经历想法。相信很多开发人员和软件工程师经历过这些艰辛,然后在事后一笑而过。以下你经历过哪些? 1....这种汹涌澎拜斗争是经常要面对,而且显然会困扰许多软件开发人员。 2.“为什么这个脚本需要这么多库?”...“哦,天哪,以前为什么不写点注释呢?” 当涉及到比较基础前端 HTML / CSS / JS 时,我们没有必要写注释。...当我一筹莫展时,往往会选择从头开始,因为这样才有可能找到完成项目的正确道路。 为什么程序员发现不了自己 Bug? ?...当你面对 Bug 时,切勿慌张,以下措施教你轻松应对 Bug 带来困扰。 ? 1.打死不承认,这代码不是,将锅甩出去。 ? 2.睁眼说瞎话,在电脑上是正常呀,超级无辜。 ?

1.1K10

技术分享 | 为什么 MySQL 客户端字符集为 latin1

问题背景 司某客户最近在检查一批新安装 MySQL 数据库时,发现了下面的现象: 该批次 MySQL 客户端字符集全部为 Latin1 ; 而之前使用同样参数模板部署 MySQL ,客户端字符集却为...utf8 ; 已知 MySQL 版本为 5.7.32 ,服务器操作系统为 Redhat 7 ,那么为什么两次安装 MySQL 字符集会不一样呢?...Client时,会根据character_set_results进行编码,然后再返回,因此也需要和character_set_client保持一致; 也就是说,控制 Client 级别字符集三个参数需要一致...Latin1 [qinguangfei0511-5.png] 那么,为什么会这样呢,我们看下官方文档上是怎么说:https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html...(这里支持包括不完全精确匹配时,OS字符集将映射到最接近MySQL字符集);如果不支持,就使用客户端默认字符集; 我们知道en_US最接近字符集就是Latin1,所以回到我们问题,当服务器字符集为

1.9K30

技术分享 | 为什么 MySQL 客户端字符集为 latin1

问题背景 司某客户最近在检查一批新安装 MySQL 数据库时,发现了下面的现象: 该批次 MySQL 客户端字符集全部为 latin1 ; 而之前使用同样参数模板部署 MySQL ,客户端字符集却为...utf8 ; 已知 MySQL 版本为 5.7.32 ,服务器操作系统为 Redhat 7 ,那么为什么两次安装 MySQL 字符集会不一样呢?...Client 时,会根据 character_set_results 进行编码,然后再返回,因此也需要和 character_set_client 保持一致; 也就是说,控制 Client 级别字符集三个参数需要一致...后,MySQL 客户端字符集变为了 latin1 那么,为什么会这样呢,我们看下官方文档上是怎么说:https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html...,就会使用操作系统(这里支持包括不完全精确匹配时,OS 字符集将映射到最接近 MySQL 字符集);如果不支持,就使用客户端默认字符集; 我们知道 en_US 最接近字符集就是 latin1 ,所以回到我们问题

1.4K30

2021-10-23:位1个数。编写一个函数,输入是一个无符号整数(以二进制形式),返回二进制表达式中数字位数为 ‘1

2021-10-23:位1个数。编写一个函数,输入是一个无符号整数(以二进制形式),返回二进制表达式中数字位数为 '1' 个数(也被称为汉明重量)。...在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您实现,因为无论整数是有符号还是无符号,其内部二进制表示形式都是相同。...在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。力扣191。 福大大 答案2021-10-23: 方法1:寻找最右1,消掉最右1。...} if true { ret := hammingWeight2(uint32(n)) fmt.Println(ret) } } // n二进制形式...,有几个1

92440

巧用“搜索”解决自学编程遇到难题

不过我们身边藏着很多“良师”,多以利用总是能够带来惊喜。善用“搜索”就是其中一位。 本文选自《一路编程》,如何通过搜索解决自学编程中遇到问题。...原因是 parseInt也对十进制之外数字有效(比如二进制、八进制,以及十六进制)。...不管怎样,你应该总是在使用 parseInt时指定进制:parseInt(’08’, 10);(以 10为基,或者十进制)会在所有浏览器中返回 8。 在 Google时代,每个人都是搜索专家。...例如,在搜索 parseInt问题结果时,一个好查询可能是“ javascript parseInt returns 0”。当我运行这个搜索时,第一条记录就返回要找答案。...在这样例子中,你会想要用类似“ why use Python”(为什么使用 Python)和“Python features”(Python特性)这样搜索关键字。

55620

preview和response值不一样

preview 返回 817809136971941000 response 返回 817809136971940993 于是,通过 postman 发起请求,返回数据和 response 值一致...二、找到了原因并解决问题 经过网上搜索、讨论、以及各种测试,最终发现了问题原因。 直接原因就是:后端对接口做了改造,将原本返回 string 类型 ID 改为了 Long 类型。...那么 Javascript 为什么会出现 Long 类型数值精度问题呢?...然而,其实际还有一位是非显式存储,因为二进制表示有效数字总是 1xxx 形式,为数部分在规约形式下第一位默认为1,给省略了。...2)0.1 和 0.2 转换为二进制之后陷入了无限循环。 3)javascript 数值存储是有精度限制,即最多52位有效小数,1入0舍,对0.1和0.2分别进行了数值取舍。

4.1K40

为什么我们要改用gRPC

虽然它已经存在好几年了,但是还没有在网上找到很多关于人们为什么使用或不使用它信息,所以我决定写一篇文章来解释我们使用gRPC原因。...gRPC明显优势是它使用了一种高效二进制编码,这使得它比JSON/HTTP更快。虽然速度更快总是受欢迎,但是有两个方面对我们来说更重要:清晰接口规范和对流支持。...流处理 今年早些时候,开始为我们搜索设计一个新API(想想“2019年6月1日给我从柏林到巴黎所有连接”)。...API只返回了一个JSON数组,所以服务器在收集所有结果之前不能发送任何东西。 我们在前端使用API中所做是让客户端轮询结果。...它们发送POST请求来设置搜索,然后发送重复GET请求来检索结果。响应包含一个字段,该字段指示搜索是否完成。这可以很好地工作,但不优雅,并且需要服务器使用诸如Redis之类数据存储来保存中间结果。

2.4K20

【说站】mysql中instr()函数使用

mysql中instr()函数使用 说明 1、用于返回子串substr在字符串str中第一次出现索引位置,没有找到子串时返回0。 2、instr()函数不区分大小写。...也就是说,通过小写、大写、标题大小写等,结果总是一样。...如果希望instr函数以区分大小写方式在非二进制字符串上搜索,可以使用instr操作符将instr函数参数从非二进制字符串转换为二进制字符串。...('MySQL字符串函数', '') AS index3,        INSTR('MySQL字符串函数', null) AS index4; index1|index2|index3|index4...| ------+------+------+------+      6|     0|     1|      | 以上就是mysql中instr()函数使用,希望对大家有所帮助。

1.3K20

Python2和3区别

学2还是3想这是每一个初学者都会遇到难题,觉得作为一名新手直接上3。Python3是未来大势所趋,2.7现在只是在维护,不会增加新功能。...接下来,把2和3主要区别整理一下分享给大家,有一部分参考了网上,结合自己理解和分析,希望可以帮到大家。...1.print这个可能是py2和py3最大区别,很多人用惯py2的人很不习惯,为什么3一定要加上一个(),这是因为print从语句变为函数。...2.类型比较 当比较两个变量时候,比如x<y,如果遇到x和y类型不匹配,py2直接返回bool结果。...文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。 4.输入函数改变了。 ? 5.赋值变量,扩展可迭代解包 ? 6.异常处理 ? ? ? 7.字典 ? 8.高阶函数 ?

1.2K20

菜鸟刷题Day5

i > 0时:runningSum[i]=runningSum[i-1]+nums[i]; 可以新开辟一个数组(大小和nums一样大),将累加结果存放到这个新开数组中,再返回这个新开辟数组。...搜索插入位置 - 力扣(LeetCode) 描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入位置。...二进制链表转整数 - 力扣(LeetCode) 描述 给你一个单链表引用结点 head。链表中每个结点值不是 0 就是 1。已知此链表是一个整数数字二进制表示形式。...请你返回该链表所表示数字 十进制值 链表不为空; 链表结点总数不超过 30; 每个结点值不是0就是 1 示例: 输入:head = [1,0,1] 输出:5 解释:二进制数 (101) 转化为十进制数...sum; } ---- 人们总是高估短期努力能带来提升,而忽略长期坚持带来改变。

29100

浅谈配置文件格式

如果无意中打开过或更改过它们,你就可能会有疑问:为什么有些配置文件看起来是某一种格式,而另一些则是看起来完全不同格式?...然而,科技行业非常青睐有详细文档标准化事物,因此多年来出现了几种比较普遍格式用来简化配置任务。 为什么我们需要配置文件 配置文件对于现代计算来说很重要。...想象一下,一个粗心程序员在这个配置文件中查询 name,结果总是返回 Beastie,因为这是文件中对 name 最后一个定义值。...如果你在 YAML 中缩进错误,YAML 解析器可能会将你文件视为无效文件,即使不视为无效,返回数据也可能是错误。...选用二进制格式一些原因如下: 速度: 程序员可以使用自定义符号在二进制配置文件中某些点注册特定信息位。提取数据时不涉及搜索,因为所有内容都已标注了索引。

65920

HashMap 精选面试题(背诵版)

hello,大家好,是二哥呀! 对于 Java 求职者来说,HashMap 可谓是重中之重,是面试必考点。然而 HashMap 知识点非常多,复习起来花费精力很大。...当 length 总是 2 n次方时,h& (length-1)运算等价于对length取模,也就是 h%length,但是 & 比 % 具有更高效率。...如果 length 为2幂次方,则 length-1 转化为二进制必定是11111……形式,在与h二进制与操作效率会非常快,而且空间不浪费。...(20) = 32(2 5 次幂),也就是说 table 数组长度总是 2 次幂。...例如二进制1000,十进制数值为8。如果不对它减1而直接操作,将得到答案10000,即16。显然不是结果。减1二进制为111,再进行操作则会得到原来数值1000,即8。

71630

2023-03-16:给定一个由 0 和 1 组成数组 arr ,将数组分成 3 个非空部分, 使得所有这些部分表示相同二进制值。 如果可以做到,请返回

2023-03-16:给定一个由 0 和 1 组成数组 arr ,将数组分成 3 个非空部分, 使得所有这些部分表示相同二进制值。..., arrj, arrj + 1, ..., arrarr.length - 1 为第三部分, 这三个部分所表示二进制值相等, 如果无法做到,就返回 -1, -1。...注意,在考虑每个部分所表示二进制时,应当将其看作一个整体, 例如,1,1,0 表示十进制中 6,而不会是 3。此外,前导零也是被允许, 所以 0,1,11,1 表示相同值。...解法思路: 首先统计整个数组中 1 数量 ones,如果 ones 不能被 3 整除,则说明无法分成三个相等部分,直接返回 -1, -1。...另外,可以使用位运算来加速计算当前部分二进制数值。 总之,对于此类问题,需要先分析题目要求,找到合适算法思路,再实现具体代码。

1.2K10
领券