首页 > 编程语言 >关于二分查找法(Java)

关于二分查找法(Java)

时间:2022-08-29 19:49:17浏览次数:52  
标签:二分 Java min int max mid 查找 下标

二分查找法是将一个有序数组平均分成两份,将其中间数和对应要查找的值进行比较;

例如现在我们将数组中最小的元素的下标设置为min

最大的元素的下标设置max

中间的元素下标mid=(min+max)/2

然后用预期要找的值value去进行对比

如果预期值比下标为mid的元素的值要大,则调整min的值为mid+1

如果预期值比下标为mid的元素的值要小,则调整max的值为mid-1

然后均需要重新计算mid值

直到min>max之前一直进行比较,直到找到对应的value值,并输出其下标

 1 public class ArrayTools {
 2     public int  binarySearch(int[]  arr,  int  value){
 3         //二分查找法,要定义mid,max,min
 4         int min=0;
 5         int max=arr.length-1;
 6         int mid=(min+max)/2;
 7         //由于不知道需要进行多少次循环,应使用while循环
 8         while (max>min){
 9             //二分查找的前提是数组是有序的
10             if (value<arr[mid]){
11                 //大了,调整max值和mid值
12                 max=mid-1;
13                 mid=(min+max)/2;
14             }else if(value>arr[mid]){
15                 //小了。调整min值和mid值
16                 min=mid+1;
17                 mid=(min+max)/2;
18             }else {
19                 return mid;
20             }
21         }
22         return -1;
23     }
24 }

 

  

标签:二分,Java,min,int,max,mid,查找,下标
From: https://www.cnblogs.com/bestwei/p/16637100.html

相关文章

  • python基础.内置函数(二),递归函数,二分法
    python基础.内置函数(二),递归函数,二分法  一.lamda匿名函数为了解决一些简单的需求而设计一句话函数 lambda表示的是匿名函数.不需要用def来声明, 一句话......
  • java设计模式之职责链模式(二)
    职责链模式的一个变种如下,执行某一个handler,用当前handler是否执行成功判断是否要执行下一个handler,首先我们定义一个抽象handler类,如果当前handler执行不成功,且还有下一......
  • Day03下载配置java环境以及如何删除java文件
    卸载JDK删除java的安装目录删除JAVA_HOME删除path下关于java的目录java-version安装JDK百度搜索JDK8,找下载地址同意下载协议下载电脑对应版本......
  • java设计模式之职责链模式(三)
    责任链模式有很多变种。有些责任链是构成一个list,遍历调用,有一个成功就直接返回。比如DateFormatChain有些的实现方式如下所示,是通过某个Handler手动调用下一个Handler来传......
  • JavaWeb--JavaBean与三层架构
    前言JavaWeb其实就是一个技术的总和,把Web看成一个容器而已主要使用JavaEE技术来实现.在加上各种中间件。整个javaWeb阶段的内容通过实际的案例贯穿学习,所涉及到的技......
  • java 字节码指令理解
    publicclassTest{privateintnum1=1;publicstaticintNUM1=100;publicintfunc(inta,intb){returnadd(a,b);}publicint......
  • IDEA报错:Error:java: Compilation failed: internal java compiler error
    查看这些配置,确保版本一样......
  • Javaweb-cookiea和session
    Cookie、Session1.会话会话:用户打开了浏览器,打开了多个链接,然后关闭浏览器,这就是一次会话。有状态会话:浏览器怎么证明你来过。服务端和客户端1.服务端给客户端一个......
  • 2022-8-29 javaweb 第一天 servlet/tomcat
    软件架构1、C/S架构:客户端/服务器--------QQ,Typora,腾讯会议。2、B/S架构:浏览器/服务器--------京东,爱奇艺,B站。资源分类静态资源:所有用户访问后,得到的结果都是一......
  • 关于java中system.out.println()中out的理解
    在Java编程中,我们常常用System.out.println()方法来输出,在集合中我经常看到使用方法引用的方式来遍历集合元素:xxx.foreach(System.out::println);也许我们都已经猜到printl......