Java 二分法检索算法代码实现详解

Java 二分法检索算法代码实现详解

什么是二分法检索算法

二分法(Binary Search)又称折半查找法,它要求待查找的序列是有序的,每次查找都取中间位置的值进行比较,然后将查找的区域缩小为左边或右边的一半,直到找到目标值为止。

代码实现

下方是 Java 语言实现的二分法算法代码:

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

上述代码中,需要传入两个参数:

  • nums:表示一个有序的数组。
  • target:表示需要查找的目标值。

代码中的实现方式是采用二分查找的方式找到目标值,找到时返回其对应的下标;如果没有找到,则返回-1表示没有找到。

示例说明

示例1

对于有序数组 nums=[1, 3, 5, 7, 9, 11],如果需要查找的目标值是 7,则可以调用上述的二分法算法进行查找。调用代码如下:

int[] nums = {1, 3, 5, 7, 9, 11};
int target = 7;
int index = binarySearch(nums, target);
System.out.println("目标值在数组中的下标为:" + index);

程序输出结果为:

目标值在数组中的下标为:3

说明目标值 7 在数组中的下标为 3。

示例2

对于有序数组 nums=[1, 3, 5, 7, 9, 11],如果需要查找的目标值是 4,则可以调用上述的二分法算法进行查找。调用代码如下:

int[] nums = {1, 3, 5, 7, 9, 11};
int target = 4;
int index = binarySearch(nums, target);
System.out.println("目标值在数组中的下标为:" + index);

程序输出结果为:

目标值在数组中的下标为:-1

说明目标值 4 在数组中未找到。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 二分法检索算法代码实现详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 如何在 Java 中实现不可变类

    如何在Java中实现不可变类? 不可变类是指在创建后不可修改的类。在Java中,不可变类是线程安全的,因为不需要同步机制就可以在多线程下使用。 创建不可变类需要遵循以下四个步骤: 将类声明为final,这将防止其他类继承它。 将所有的成员变量声明为私有的final,这将防止其他类修改它们。 不要提供任何修改成员变量的方法,例如setters()。 如果一个对…

    Java 2023年5月26日
    00
  • 解决maven没有打包xml文件的问题

    解决maven没有打包xml文件的问题,可以通过修改pom.xml文件,将xml文件打包至目标文件中。 1.在pom.xml文件中增加插件 在pom.xml文件中增加以下插件: <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> …

    Java 2023年5月19日
    00
  • JDK14性能管理工具之jstack使用介绍

    JDK14性能管理工具之jstack使用介绍 简介 jstack 是 JDK 自带的一款性能分析工具,可以用来查看 Java 进程中每个线程的状态、堆栈信息等,来帮助我们定位问题并进行性能分析。 jstack 命令语法 jstack 的使用非常简单,语法如下: jstack [ option ] <pid> 其中,option 表示可选参数, 表…

    Java 2023年5月26日
    00
  • java实现简易聊天功能

    Java实现简易聊天功能攻略 1. 确定技术栈 要实现简易聊天功能,需要选择合适的技术栈。Java语言比较适合网络编程,因此可以先选择Java语言作为开发语言。 对于通信协议,可以选择TCP或UDP。TCP是一种可靠传输协议,通过三次握手建立连接,确保数据的可靠性。UDP则是一种不可靠传输协议,不进行连接建立,发送数据时没有确认机制。 对于GUI界面,可以使…

    Java 2023年5月19日
    00
  • Java 梳理总结关于static关键字常见问题

    下面是关于Java中static关键字常见问题的梳理总结及示例说明: 一、static关键字的作用 在Java中,静态关键字static可以用于修饰类、方法和变量,使用静态关键字可以实现以下功能: 静态变量:静态变量是指在类加载过程中就被创建出来,与类本身相关联的变量,用static关键字修饰。由于静态变量在类加载时就已经创建,所以可以通过类名直接访问。 静…

    Java 2023年5月26日
    00
  • springMVC使用jsp:include嵌入页面的两种方法(推荐)

    以下是完整攻略: 1. SpringMVC 使用 jsp:include 嵌入页面的两种方法 在 SpringMVC 中,我们可以通过 jsp:include 标签来嵌入页面,它可以将另一个页面插入到当前页面中。这在网站开发中非常常见,比如在页面的 header 或 footer 中嵌入其他页面的内容。下面将介绍两种最常用的方法。 1.1 方法一:使用 js…

    Java 2023年6月15日
    00
  • java的Hibernate框架报错“TransactionRequiredException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“TransactionRequiredException”错误。这个错误通常是由于以下原因之一引起的: 事务管理器配置错误:如果您的事务管理器配置错误,则可能会出现此错误。在这种情况下,需要检查您的事务管理器配置以解决此问题。 事务注解缺失:如果您的事务注解缺失,则可能会出现此错误。在这种情况下,需要添加…

    Java 2023年5月4日
    00
  • 用简单的代码来实现文件上传

    让我来详细讲解一下“用简单的代码来实现文件上传”的完整攻略。 什么是文件上传? 在网站开发中,文件上传就是指用户将本地的文件通过网站上传到服务器中。 实现文件上传的原理 实现文件上传,需要配合HTTP协议,主要分为以下几步: 用户通过网页上传文件,前端通过HTML5的FormData对象将文件数据以二进制流的形式传递到后端。 后端接收到上传的文件数据后,将文…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部