```package com.watching.contact;
public class QueryTest2 {
public static void main(String[] args) {
//二分法查找需要数列有序
int[] arr = new int[] {1,2,3,4,5,25,99,574,1000};
int dest = 5;
int head = 0;//首索引
int end = arr.length - 1;//末索引
boolean isflag = true;
for(int i = 0;i < arr.length / 2;i++) {
int middle = (head + end) / 2;
if (arr[middle] == dest) {
System.out.println("恭喜你找到了" + dest + "!它在数组的第" + middle + "个位置!");
isflag = false;
break;
}
else if(arr[middle] < dest) {
head = middle + 1;
}
else end = middle - 1;
}
if(isflag == true) {
System.out.println("抱歉,没在数组中找到你想找的数~");
}
}
}
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已采纳
请问二分法我这里使用的for循环的循环条件(i < arr.length / 2)有问题吗?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
threenewbee 2020-10-11 01:02关注你的循环变量i也没有用到。
二分查找的思路应该是每次选取范围的一半,看是大于还是小于,如果小于,以一半到结束为新的范围,否则以开始到一半为新的范围
循环终止的条件是找到元素,或者范围开始>=结束下标
你的思路完全不对本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2020-10-10 14:33回答 1 已采纳 在另一个问题中回答你了,第一个写法,那个for循环没有什么意义。
- 2022-06-13 09:41回答 3 已采纳 if (x = -1)printf("没有找到该下标\n");if的=改成==就行了
- 2021-10-28 11:56回答 1 已采纳 你好,递归的意思就是函数里面调用函数,代码供参考: function Y = Yanghui(n) if(n==1) Y = 1; else Y = zeros(n,n); Y
- 2021-10-09 07:00ASDWYang的博客 本篇文章是根据视频学的,来源如下所示: 教程来源: java基础到高级_零基础自学Java–尚硅谷–宋红康 教程视频地址: ...1. 数组元素的赋值(杨辉三角[笔试的时候会问到(有一道例题)]、回形数(有...
- 2022-08-24 07:58回答 2 已采纳 循环过程中,需要不断修正这个mid值的啊,不是初始化一下就完了每次循环的开始,都需要重新计算这个mid值,否则mid值都是固定的,程序就成死循环了
- 2022-11-01 05:28回答 2 已采纳 既然num[mid]>target,那么end就应该是end = mid - 1,因为num[mid]明显不是要的结果,为什么还要去判断呢,只会浪费循环次数
- 2022-07-16 13:12回答 2 已采纳 public class BinarySort { public static void binarySort(int[] source) { int i, j; int high, low,
- 2022-01-01 07:50@看花的博客 线性结构 1.数组 (1)数组的基本使用 (2).数组元素的添加 (3)数组元素的删除 (4)面向对象的数组 (5).查找算法-线性查找 (6).查找算法-二分法查找
- 2021-07-28 13:28回答 2 已采纳 大哥,以后别这样写程序呀,赋值好好在外面赋值好了,for语句可不兴这么复杂的;改一下吧,我都快对for语句产生了怀疑;for(n=0;fabs(fa-fn)>=1e-5;)这个条件三我都快觉得不
- 2021-04-20 07:12回答 7 已采纳 import numpy as np X0 = np.arange(-1, 101, 1.0) # 炮检距(中心点即目标点),-1-100 X = np.zeros(90) # 射线经过的水
- 2022-06-16 12:11回答 1 已采纳 #include<iostream> using namespace std; float erfen1(float a, float b); float erfen2(float a
- 2018-07-19 07:30橘子郡耶的博客 i<arr.length-1;i++){//外层循环-1 因为循环最后一次 5角标和5角标的值自己比自己 没意义 for(int j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = ...
- 2021-03-07 21:56weixin_39947812的博客 1.数组的创建与元素赋值:杨辉三角(二维数组)、回形数(二维数组)、6个数,1-30之间随机生成且不重复。杨辉三角public classYHSJ {public static voidmain(String[] args) {//定义了一个...for(int i=0;ifor(int j=0;...
- 2021-10-30 09:15劲夫学编程的博客 一、找出数组中最大元素 public static int max(int[]array) { if(array==null||array.length==0) //防止传过来的引用变量没有指向变量或者指向的对象里没有东西 ... for(int i=1;i< array.length;i++) {
- 2020-08-24 20:16Java 二分法检索算法代码实现详解 Java 二分法检索算法是一种高效的搜索算法,它可以快速地在有序数组中查找特定的元素。该算法的基本思想是将数组分成两半,并将目标元素与中间元素进行比较,以确定目标元素的位置...
- 2021-12-17 02:21在上面的代码中,我们首先定义了一个二维数组`arr`,然后使用for循环遍历二维数组的对角线元素,并将其相加,最后输出对角线之和。 四、其他知识点 在本资源中,我们还介绍了其他一些Java数组相关的知识点,包括:...
- 2021-03-13 04:26淘宝直播的博客 一,打印三角形(for循环嵌套)1.用*打印直角三角形需求:打印如下直角三角形***************思路:采用for嵌套循环外层控制行数内层控制列数(列数为变量,每次均减1)代码实现:class ForForDemo {public static void ...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司