Java实现的两种常见简单查找算法示例【快速查找与二分查找】

下面我就来详细讲解一下Java实现的快速查找和二分查找算法。

一、快速查找

快速查找,也称为顺序查找,是一种最简单的查找算法。这种算法就是在待查找的一组数据中,顺序地遍历每一个数据,直到找到待查找的目标数据为止,或者遍历完数组都没有找到目标数据。

Java实现快速查找的代码如下:

public class QuickFind {

    // 查找函数
    public static int search(int[] arr, int target) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == target) {
                return i;
            }
        }
        return -1;
    }

    // 测试函数
    public static void main(String[] args) {
        int[] arr = {4, 3, 7, 1, 9, 2};
        int target = 7;
        int index = search(arr, target);
        System.out.println("目标数据" + target + "的下标是:" + index);
    }
}

上述代码中,search函数接收一个整型数组arr和一个整型数值target,然后顺序遍历数组arr中的每一个元素,查找是否有元素的值等于target。如果找到了目标元素,就返回该元素在数组中的下标,否则返回-1。main函数是一个测试函数,用来演示快速查找的用法。在本示例中,我们先定义了一个整型数组arr,然后查找数组中的数据7,最后打印出该元素在数组中的下标。

二、二分查找

二分查找,也称为折半查找,是一种针对有序数组的查找算法。基本思想是先在数组的中间位置进行比较,如果目标元素等于中间元素,则查找成功。如果目标元素小于中间元素,则在数组的左半部分继续查找,否则在数组的右半部分继续查找,不断缩小查找范围,直到找到目标元素为止。

Java实现二分查找的代码如下:

public class BinarySearch {

    // 查找函数
    public static int search(int[] arr, int target) {
        int left = 0, right = arr.length - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (arr[mid] == target) {
                return mid;
            } else if (arr[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return -1;
    }

    // 测试函数
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 7, 9};
        int target = 7;
        int index = search(arr, target);
        System.out.println("目标数据" + target + "的下标是:" + index);
    }
}

上述代码中,search函数接收一个有序整型数组arr和一个整型数值target,然后采用二分查找的方式,从数组中间位置开始查找。如果目标元素等于中间元素,则查找成功,返回中间位置下标。如果目标元素小于中间元素,则在数组的左半部分继续查找;否则在数组的右半部分继续查找。直到找到目标元素为止,或者遍历完整个数组都没有找到目标元素,返回-1。

以上就是Java实现的两种常见简单查找算法:快速查找和二分查找的攻略过程,其中包含了两个实际应用的示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现的两种常见简单查找算法示例【快速查找与二分查找】 - Python技术站

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

相关文章

  • 举例讲解Java的JSON类库GSON的基本用法

    下面就给您详细讲解Java的JSON类库GSON的基本用法的攻略。 什么是GSON GSON是Google开发的用于Java解析JSON数据的类库。它可以将一个JSON字符串转化成Java对象,同样也可以将Java对象转化成对应的JSON字符串。GSON可以编码和解码任何Java对象。 导入GSON的Jar包 在使用GSON之前,我们需要先在项目中导入GSO…

    Java 2023年5月26日
    00
  • java web实现自动登录

    让我来简单介绍一下 “java web实现自动登录” 的实现方案。 1. 存储登录状态 在用户登录时,可以将该用户的相关登录信息存储到浏览器的 cookie 中,使得用户在下一次访问时无需重新登录,即可直接登录进入系统,这就是所谓的“自动登录”。 1.1 操作流程 1.用户登陆,输入用户名和密码。 2.后台服务器验证用户信息。若验证成功,则生成token(包…

    Java 2023年5月19日
    00
  • java信号量控制线程打印顺序的示例分享

    Java信号量是一种同步原语,用于控制线程并发访问资源的数量。Java信号量的主要作用是保护临界区,以确保在任何时刻只有特定数量的线程可以访问该区域。在这里,我们将分享一个Java信号量控制线程打印顺序的示例,该示例演示如何使用Java信号量来协调多个线程以按特定顺序打印。 1. 示例一 在这个示例中,我们将创建两个线程,一个线程负责打印奇数,另一个线程负责…

    Java 2023年5月26日
    00
  • SpringSecurity自定义登录界面

    在这里我将为您详细讲解SpringSecurity如何自定义登录界面的完整攻略。 1. SpringSecurity简介 SpringSecurity是一个基于Spring框架的安全管理框架,它提供了一套完整的安全控制方案,可以用于Web应用程序和企业级应用程序。 SpringSecurity包括认证(Authentication)、授权(Authoriza…

    Java 2023年5月20日
    00
  • 什么是运行时异常?

    运行时异常指在程序运行过程中,由于程序逻辑错误或者环境条件异常等原因,导致程序抛出的异常。与编译时异常不同的是,运行时异常不需要在代码中显示地声明或捕获,而是在程序运行时动态地抛出和处理。 常见的运行时异常包括:空指针异常(NullPointerException)、数组下标越界异常(ArrayIndexOutOfBoundsException)、类型转换异…

    Java 2023年4月27日
    00
  • java泛型基本知识及通用方法

    关于“java泛型基本知识及通用方法”的完整攻略,我来详细讲解一下。 什么是Java泛型 Java泛型是Java5中引入的一项新特性,它可以让我们更加方便、安全地处理不同类型的数据,同时也可以提高代码的重用性。 泛型的基本用法 Java泛型通过将类型作为参数传入来实现,从而实现对不同类型数据的处理。 泛型类 在Java中,我们可以通过声明一个泛型类来实现对不…

    Java 2023年5月19日
    00
  • 解决RestTemplate 的getForEntity调用接口乱码的问题

    RestTemplate是Spring框架提供的用于进行HTTP请求的工具,但是在使用getForEntity方法调用接口时,会出现中文乱码的问题。 解决这个问题可以分为两个步骤: 设置RestTemplate的编码方式 在使用RestTemplate的时候,需要设置它的编码方式。可以在创建RestTemplate对象时,传入一个StringHttpMess…

    Java 2023年5月20日
    00
  • spring boot 配置动态刷新实现详解

    下面就为大家介绍“springboot配置动态刷新实现详解”的完整攻略。 一、概述 在使用SpringBoot时,有时候需要对应用程序的配置进行变更,需要重新启动应用程序才能使配置生效,这就非常繁琐。因此,为了解决这个问题,一些第三方库就提出了SpringCloud Config的方案,通过配置中心实现配置修改后能够自动刷新到应用程序当中,但是这也存在着一些…

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