有没有大神看一下代码,新手真的看不懂逻辑。为什么会返回5?

weixin_44647325 2019-04-10 11:57:02
public class sorted{

public static int binarySearch(int[] data, int target) {
int start = 0;
int end = data.length - 1;
while(start <= end) {
int mid = (start + end )/2;
if(target< data[mid]) {
end = mid -1;
}else if(target > data[mid]) {
start = mid +1;
}else {
return mid;
}
}
return -1;
}

public static void main(String[] args) {
int[] values = {1,2,3,4,5,8,8,8,};
int target = 8;
int a = binarySearch( values,target);
System.out.println(a);
}
}
...全文
329 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
早起晚睡 2019-04-11
  • 打赏
  • 举报
回复
在数组中没有的时候就返回-1
十八道胡同 2019-04-10
  • 打赏
  • 举报
回复
二分查找,找8出现的下标
欧贝克 2019-04-10
  • 打赏
  • 举报
回复
引用 4 楼 羊毛坦的回复:
binarysearch很明显了。。。但是那个return-1是什么意思啊。作为小白我也不是很清楚
传入方法的数组为空时,while的条件不成立,也就是说该方法没有了返回值,所以需要在末尾返回-1
羊毛坦 2019-04-10
  • 打赏
  • 举报
回复
binarysearch很明显了。。。但是那个return-1是什么意思啊。作为小白我也不是很清楚
tbywt 2019-04-10
  • 打赏
  • 举报
回复
这个就是折半查找啊,第一次start=0,end=7,mid为3,date[mid]不等于8,然后start=mid+1,start就为4了, 第二次start为4,end 为7,mid为5,data[mid]为8等于target,所以就返回mid 5
欧贝克 2019-04-10
  • 打赏
  • 举报
回复
这种查找法在查找有多个目标的时候,返回的是靠中间那个目标。起手的end是7,mid是3,data(mid)是4,start此时变为4,第二轮循环,mid是5,刚好data(mid)是8,所以返回mid,5
前言如释重负,好用的技术就应该越来越简单React Hooks 是 React 16.8 从提案转为正式加入的新特性。这个新特性是个非常棒的设计。 可以说对于React 技术栈的发展具分割线一样的意义。讲师在课程中提到:之前使用 React 作为主要的前端技术,开发一款网页游戏。在整个游戏的各个模块中,Redux ,mobx,以及蚂蚁金服的 ant-design,dva, umi 这些框架或者第三方库都有涉及使用。但是自从了解了Facebook官方提案的 Hooks 特性后,才真正觉得获得了前所未有的解脱。如果你有React开发经验,学习了解 Hooks 后,一定有一种如释重负的轻松感。React 带来了方便也带来了迷茫相信关心 React Hooks 这项新特性的童鞋,很多已经有了一定的 React 开发经验。那么你一定有所体验,React 给我们带来方便的同时,也的确和长久以来的前端开发模式有极大的不同。React 并不需要用继承,而是推荐用嵌套。React 有独特的 jsx 语法。大多数情况 jsx 都使得我们的代码更加简洁了。然而有些时候也给我们带来了一些困扰。 比如数据的传递,逻辑的复用。 react 是一种 mvvm 的设计模式,作为开发者一定要清楚,那些数据是业务数据,那些数据是UI数据。否则你的代码很有可能陷入混乱局面。大型项目中模块化与功能解耦困难在公司项目中 App 稍大的时候,我们发现状态提升和只通过 props 进行数据传递。很多时候都很难实现我们的需求。这时无论我们是否清楚的了解,但是状态管理也就是 redux mobx 等,轻易地进入到了公司的项目中。我们经过初期的尝试发现状态管理,确实比用纯粹的 React 带来了数据传递上的方便,以及代码组织上的清晰。但前提是你看懂且理解了 redux 大神晦涩的官网文档。 本来 React 被设计用来组件化前端开发。但当我们初期使用状态管理,我们常常过度的使用状态数据,业务逻辑和ui逻辑没有清楚的分离,最终你的应用代码结果可能是:除了少数几个组件是独立的解耦的,大多数组件都因为状态数据的共享而耦合在了一起,且他们也完全依赖状态管理框架。无法再轻松的转移复用。使用高阶组件,属性渲染,渲染回调等高级特性,确实可以帮我们解决模块或功能的解耦问题。但是这些方法,确实有点超出普通“猿类”的技能。且降低了代码的可读性,对于团队协作,这是很致命的问题。React Hooks 真正开启前端模块化的金钥匙对于以上问题,React Hooks 都有很好的解决方案,官方的设计动机就是解决这些曾经的繁琐,化繁为简。React Hooks 让我们在纯函数中就可以使用 React 的众多特性。而不必使用类。代码扁平,易读。解耦状态相关逻辑,UI逻辑和业务逻辑更好的分离。这些逻辑往往是纯函数,而以前很容易混合在类组件中。通过自定义 Hooks 我们可以把应用中“状态相关”逻辑解耦出来,独立编写到我们自己的hooks 中。从而更加易于复用和独立测试。

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧