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

我用来查看整数是否在数组中的二进制搜索永远循环,有人知道为什么吗?(在Java中)

在Java中,如果使用二进制搜索算法来查找整数是否在数组中,而出现了永远循环的情况,可能是由于以下几个原因:

  1. 算法实现的问题:二进制搜索算法需要按照一定的规则进行循环和判断,可能是在实现算法的过程中出现了逻辑错误或者边界条件没有正确处理,导致循环无法正常终止。
  2. 数据问题:如果数组没有按照升序或者降序排列,而是乱序的话,那么二进制搜索算法可能无法正确判断中间点,从而导致循环错误。
  3. 数据类型问题:在Java中,如果使用了错误的数据类型来表示数组或者中间索引,例如使用byte类型或者short类型来表示索引,可能会导致溢出或者错误比较,进而造成循环错误。
  4. 循环条件问题:二进制搜索算法的循环条件需要正确判断边界,如果边界条件设置不当,例如使用了错误的比较符号或者错误的条件判断,循环就无法正常终止。

针对这个问题,可以尝试以下解决方案:

  1. 检查算法实现:仔细检查二进制搜索算法的实现,确保循环和判断逻辑正确无误,并处理好边界条件。
  2. 确保数据有序:确保数组已经按照升序或者降序排列,如果数组未排序,可以先进行排序操作,例如使用Arrays.sort()方法。
  3. 检查数据类型:确保使用正确的数据类型表示数组和中间索引,避免溢出或者错误的比较操作。
  4. 修正循环条件:检查循环条件,确保边界条件设置正确,并使用合适的比较符号进行判断。

最后,关于腾讯云的相关产品和介绍链接,可以根据实际需求选择合适的产品,例如云数据库MySQL版、云服务器、云函数、CDN加速等。具体产品介绍和链接可以参考腾讯云官方文档或者腾讯云的产品页面。

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

相关·内容

JavaScript 浮点数之迷:0.1 + 0.2 为什么不等于 0.3?

你可能在哪里见过 “0.1 + 0.2 = 0.30000000000000004” 但是知道这背后真正的原理吗?是只有 JavaScript 中存在吗?...一个浮点数 float a = 1 会存储成 1.0 吗? 计算机内部都是采用二进制进行表示,即 0 1 编码组成。在计算机中是没有 1.0 的,它只认 0 1 编码。...计算机的世界中是否有减法?1 - 1 是如何实现的? 2. 十进制数 1 的二进制为 0000 0001,-1 对应的二进制是什么?用 1000 0001 表示 -1 对吗?...1. “0.1” 转为二进制 不知道怎么转换的,参考上面 先修知识 的 十进制小数转二进制 0.000110011001100110011(0011) // 0011 将会无限循环 2....1111111011,E 为 11 位,最终为 01111111011 3.3 尾数位 在 IEEE 754 中,循环位就不能在无限循环下去了,在双精确度 64 位下最多存储的有效整数位数为 52 位

4.1K31

【简单了解系列】从基础的使用来深挖HashMap

每一个键值对又叫Entry,这些Entry分散的存储在一个由数组和链表组成的集合中。当然在Java8中,Entry变成了Node。...HashMap的使用 上面简单了解了HashMap的定义和基本的底层数据结构,接下来通过HashMap在平常开发中的使用来具体看看怎么实现的。...有的朋(杠)友(精)就要问了,为什么是16呢?我13,14不他不香吗?我们接下来就要分析为什么不香。 当我们放元素进入map的时候,它是如何确定元素在table数组中的位置的呢?...当该位置的链表中的元素超过了TREEIFY_THRESHOLD所设置的数量时,就会触发树化,将其转化为红黑树。Java8里给的默认值是8。 为啥要转化成红黑树 首先我们要知道为什么要树化。...至于红黑树的相关细节,涉及的东西还是挺多,我之后会单独拿一个篇幅来讲。 为什么要用尾插法 我们目前用的最多的是Java8,在Java8中采用的是尾插法,Java8之前采用的是头插法。

43020
  • HashMap你真的了解吗?

    ,其二进制表示为 0..0111010011100 0011,相关索引为 0…0 0011 = 3 这就是为什么数组大小是 2 的幂。...自动调整大小 获取索引后,函数(get、put 或 remove)访问/迭代关联的链表以查看是否存在给定键的现有条目。...如果不进行修改,此机制可能会导致性能问题,因为该函数需要遍历整个列表以查看条目是否存在。假设内部数组的大小是默认值(16),您需要存储 200 万个值。...如果您尝试使用内部循环获取列表中的数据,则 get() 将永远不会结束。 HashTable实现是一种线程安全的实现,可以防止这种情况发生。...使用这些树的主要优点是在许多数据位于内部表的同一索引(桶)中的情况下,在树中的搜索将花费 O(log(n))而它会花费O(n)带有链表。

    2.2K30

    再看golang垃圾回收

    问题&角度 在研究golang垃圾回收的时候,你有没有想过下面几个问题 golang如果有两个对象循环互相引用,是否会出现永远回收不了的对象? golang的gc标记方式为什么用bfs而不是dfs?...问题1 golang如果有两个对象循环互相引用,是否会出现永远回收不了的对象? 为什么会想到有这个问题呢?因为有人曾经问过,为什么golang里面不能有包的循环引用?其实这两个问题并没有相关性。。。...首先bfs是广度优先搜索,dfs是深度优先搜索,我们知道我们的三色标记是一层层往下走的,那为什么会这样设计呢? 这个问题没有明确的答案,我说一下我个人的理解。...问题3 是否有可能永远不触发gc? 我们知道触发gc的条件有几个: 达到GC百分比上限 达到一定的时间2分钟(sysmon) 使用runtime.GC() 那么是否有办法实现永远不触发gc呢?有的!...所以这也让我们在写程序的时候要注意,千万不能有死循环,并且当中没有任何函数调用(虽然在实际中很少存在) 问题4 为什么golang的gc不整理、不分代?

    37220

    hashmap put过程面试_面试时问你base在哪儿

    很适合用来考察面试者的Java基础。...安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目前在–公司做–系统开发。 面试官: 看你简历上写熟悉Java集合,HashMap用过的吧? 安琪拉: 用过的。...我觉得还是应该画个图比较清楚,如下: 判断数组是否为空,为空进行初始化; 不为空,计算 k 的 hash 值,通过(n - 1) & hash计算应当存放在数组中的下标 index; 查看 table...1,最后再进行+1操作,111111 + 1 = 1000000 = 2 6 2^6 26 (符合大于50并且是2的整数次幂 ) 面试官: 你提到hash函数,你知道HashMap的哈希函数怎么设计的吗...,1.8遍历链表,将元素放置到链表的最后; 扩容的时候1.7需要对原数组中的元素进行重新hash定位在新数组的位置,1.8采用更简单的判断逻辑,位置不变或索引+旧容量大小; 在插入时,1.7先判断是否需要扩容

    22630

    【算法与数据结构专场】BitMap算法介绍

    我们先来看个简单的问题。 假如给你20亿个非负数的int型整数,然后再给你一个非负数的int型整数 t ,让你判断t是否存在于这20亿数中,你会怎么做呢?...有人可能会用一个int数组,然后把20亿个数给存进去,然后再循环遍历一下就可以了。...而被我们拿来表示两个状态,是否也有点浪费了呢? 我们都知道,一个二进制位,有0和1两种状态,所以说,其实我们是可以用一个二进制位来代表一个int型的数是否存在的。...可能有人会问,假如我要添加一个数n,我知道它要存在第n个位那里,把第n个二进制改为1,可是我要怎么操作呢?...Java中有自带的bitmap实现,今天我们就用Java中自带的bitmap来做道题练练手。我们换道类似题目吧,不知道你一眼是否就能想到用bitmap算法来做。

    64520

    想进大厂,这是你绕不过的门槛

    但就如标题所说,想进大厂,数据结构与算法就是你绕不过的门槛,肯定会有人反驳我,说“我不进大厂也可以好好的”,但咱们反问一下,为什么大厂面试必问数据结构与算法?...光说不练假把式 我这整理了一份《2021年最新版数据结构与算法面试手册》,包括: Java C++ Golang 相关的数据结构与算法题及解析,详细内容包括: 1.Java 1.1 哈希 Java中的HashMap...两个二叉树是否互为镜像 翻转二叉树or镜像二叉树 求两个二叉树的最低公共祖先节点 二叉树的前序遍历 二叉树的中序遍历 二叉树的后序遍历 前序遍历和后序遍历构造二叉树 在二叉树中插入节点 输入一个二叉树和一个整数...,打印出二叉树中节点值的和等于输入整数所有的路径 二叉树的搜索区间 二叉树的层次遍历 二叉树内两个节点的最长距离 不同的二叉树 判断二叉树是否是合法的二叉查找树(BST) 1.3 链表 谈一谈,bucket...找出数组中和为S的一对组合,找出一组就行 求一个数组中连续子向量的最大和 寻找一数组中前K个最大的数 1.5 排序 用Java写一·个冒泡排序? 排序都有哪几种方法?

    68650

    挑战10个最难回答的Java面试题(附答案)

    这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...我不确定这是否是面试官实际期待的,但这个我认为至少有意义,请纠正我如果我错了,请告诉我们是否还有其他令人信服的理由调用 wait(),notify() 或 Java 中的 notifyAll() 方法。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    1.4K40

    挑战 10 道超难 Java 面试题

    另一个类似棘手的Java问题。为什么 C++ 支持运算符重载而 Java 不支持? 有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。...这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    73420

    Java 大牛看过来,挑战10道超难 Java 面试题!

    另一个类似棘手的Java问题。为什么 C++ 支持运算符重载而 Java 不支持? 有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。...这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    72931

    听说这10道Java面试题90%的人都不会!!!

    另一个类似棘手的Java问题。为什么 C++ 支持运算符重载而 Java 不支持? 有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。...这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    64120

    挑战 10 道超难 Java 面试题

    另一个类似棘手的Java问题。为什么 C++ 支持运算符重载而 Java 不支持? 有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。...这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    75310

    460道Java后端面试高频题

    构造器是否可以被重写? 构造方法有哪些特性? 在 Java 中定义一个不做事且没有参数的构造方法有什么作用? Java 中创建对象的几种方式? 抽象类和接口有什么区别? 静态变量和实例变量的区别?...HashMap 多线程死循环问题? HashMap 的 get 方法能否判断某个元素是否在 Map 中? HashMap 与 HashTable/ConcurrentHashMap 的区别是什么?...Socket 在 OSI七 层模型中的哪一层? Java 如何实现无阻塞方式的 Socket 编程? 说下你知道你知道的攻击手段有哪些? 跨站脚本攻击的原理、危害和防范手段?...调整数组顺序使奇数位于偶数前面 数组的度 求一个数组中的第 K 小 / 大的数 将一个整数数组划分为 K 个相等的子集问题 旋转数组中的最小数字 在二维数组中查找一个数 找出数组中重复的数字 找出数组中只出现一次的那个数...+ Karatsuba 算法 打印从 1 到最大的 n 位数:需要考虑大数问题 数值的整数次方 二进制中 1 的个数 10、排序的应用 求一个数组中的第 K 小 / 大的数 最小的 K 个数 求一个数组中的逆序对数问题

    83920

    10个最难回答的Java面试题

    这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...具有双检查锁定的单例示例 下面的代码是单例模式中双重检查锁定的示例,此处的 getInstance() 方法检查两次,以查看 INSTANCE 是否为空,这就是为什么它被称为双检查锁定模式,请记住,双检查锁定是代理之前...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    81920

    来一场Java高级的面试,看看自己啥水准

    另一个类似棘手的Java问题。为什么 C++ 支持运算符重载而 Java 不支持? 有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...我不确定这是否是面试官实际期待的,但这个我认为至少有意义,请纠正我如果我错了,请告诉我们是否还有其他令人信服的理由调用 wait(),notify() 或 Java 中的 notifyAll() 方法。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    1K10

    史上最难10道 Java 面试题!

    另一个类似棘手的Java问题。为什么 C++ 支持运算符重载而 Java 不支持? 有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。...这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10、你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    85230

    挑战 10 道超难 Java 面试题

    另一个类似棘手的Java问题。为什么 C++ 支持运算符重载而 Java 不支持? 有人可能会说+运算符在 Java 中已被重载用于字符串连接,不要被这些论据所欺骗。...这个原因也说明了,为什么 String 在 Java 中是最终的,通过使 java.lang.String final,Java设计者确保没有人覆盖 String 类的任何行为。...这是我的版本之一 /** * Java 程序通过强制循环等待来创建死锁。...* 如果一个线程持有字符串锁,则这会产生潜在的死锁 * 和其他持有整数锁,他们等待对方,永远。...2) Javac 中 wait 和 notify 方法之间的任何潜在竞争条件。 10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

    69820

    javaScript的七种数据类型大全

    众所周知javaScript是一门“极像java的语言”,既然与java那么像,甚至可以说就是套用了java的语法,我在上篇文章《javaScript的基本语法大全》中也列出了很多例子,...字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始),也可以使用length属性。 ?...Number(null) // 0 5 + null // 5 我们知道在java中null可能是情况是调用方法传参数的时候传的值是空值,也可能是申明了值,却并未赋值,因此null可以表示为一个空对象...既然含义与用法都差不多,为什么要同时设置两个这样的数据类型,这不是无端增加复杂度,令初学者困扰吗?说到这里这就与历史原因有关了。...但是,一般情况下,都是只想遍历对象自身的属性,所以使用for...in的时候,应该结合使用hasOwnProperty方法,在循环内部判断一下,某个属性是否为对象自身的属性。

    2.1K40
    领券