Java递归基础案例-二分查找法

简介: Java递归基础案例-二分查找法

二分查找法,顾名思义,就是一直除以2,找中间部分,例如:1024中的任何一个数都能在10次内准确的猜出来。那么我们查找内容也可以使用二分法快速查找,其实很多时候找bug用的就是这种方法。


package Action;
public class test {
  public static void main(String[] args) {
  int[] arr = { 1, 2, 3, 4, 5, 6 };
  System.out.println(search(arr, 2, 0, arr.length - 1));
  System.out.println(search(arr, 5, 0, arr.length - 1));
  }
  /**
  * @search 返回被查找的数的位置下标
  * @param arr   查找的数组
  * @param n     是要查找的数
  * @param begin 低位
  * @param end   高位
  * @return
  */
  public static int search(int[] arr, int n, int begin, int end) {
  int mid = (begin + end) / 2;//(开始坐标+结束坐标)/2,找中点
  if (n < arr[begin] || n > arr[end] || arr[begin] > arr[end]) {
    return -1;// 结束
  }
  System.out.println("begin:"+begin+"——end:"+end+"——center:"+mid);
  if (arr[mid] < n) {
    return search(arr, n, mid + 1, end);
  } else if (arr[mid] > n) {
    return search(arr, n, begin, mid - 1);
  } else {
    return mid;
  }
  }
}


执行效果:


begin:0——end:5——center:2

begin:0——end:1——center:0

begin:1——end:1——center:1

1

begin:0——end:5——center:2

begin:3——end:5——center:4

4


可以看到,最终要找的2和5就是在下标的1和4处,而且计算速度也是比较快的。


这个比较好理解,希望能对大家有点帮助。


相关文章
|
1月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
66 3
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
86 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
58 2
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
26 2
|
2月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
56 15
|
2月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
22 1
|
2月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
38 5
|
2月前
|
Java
在 Java 中实现二分查找法
【10月更文挑战第9天】
33 1
|
2月前
|
算法 Java
java冒泡排序与二分查找(详解)
java冒泡排序与二分查找(详解)
40 4
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
46 2