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分布式session存储解决方案图解

    Java分布式session存储是指将Web应用中的session数据存储在多个服务器上,从而实现应用服务器之间的session数据共享,以提高系统的可靠性和可伸缩性。常用的Java分布式session存储解决方案有以下几种: 基于Tomcat的分布式session存储解决方案 1. 安装Tomcat服务器 在多个服务器上安装Tomcat应用服务器,确保To…

    Java 2023年5月20日
    00
  • springmvc+spring+mybatis实现用户登录功能(上)

    我会详细讲解“springmvc+spring+mybatis实现用户登录功能(上)”的完整攻略。 首先,我们需要明确一下这个项目所需的技术栈: Spring MVC:用于实现Web应用程序的MVC架构,处理用户请求和响应的分发和转发。 Spring:用于管理和组织应用中的Bean,提供依赖注入和面向切面编程等功能。 MyBatis:用于操作数据库,提供了较…

    Java 2023年5月16日
    00
  • java 文件和byte互转的实例

    讲解Java文件和Byte数组的互转需要以下步骤: 1. 获取Java文件的字节数组 Java文件的字节数组通常用于网络传输或者是保存到数据库等操作。可以使用Java中的IO流来读取文件,然后将其转换为字节数组。 以下是一个示例,演示如何将Java文件转换为字节数组: import java.io.File; import java.io.FileInput…

    Java 2023年5月20日
    00
  • java编程是做什么的

    为了回答这个问题,首先需要明确“Java编程”这个概念其实是比较广泛的,因为Java语言可以用于多种应用场景。但是我们可以从以下几个方面来讲解Java编程的用途: 开发桌面应用程序Java语言最初的设计目的是用于开发桌面应用程序。通过Java编程,可以使用Java Swing和Java FX等UI框架,来构建各种类型的桌面应用程序。例如,可以开发图像编辑器、…

    Java 2023年5月23日
    00
  • Spring存储与读取Bean对象方法

    下面是关于”Spring存储与读取Bean对象方法”的完整攻略。 1. 前置知识 在学习本文之前,建议先掌握以下知识: Java基础 Spring基础 Spring IOC 2. 存储Bean对象到Spring容器 在Spring框架中,可以通过ApplicationContext接口来加载Bean对象,也可以将Bean对象保存到容器中。具体实现方式有两种:…

    Java 2023年5月26日
    00
  • Struts2学习笔记(7)-访问Web元素

    Struts2学习笔记(7)-访问Web元素 在Struts2的Action中,我们可以通过request、response、application、session等对象来访问Web元素。具体操作可以参考以下步骤: 1. 在Action类中定义对应的Web元素 private HttpServletRequest request; private HttpS…

    Java 2023年5月20日
    00
  • IDEA的基本使用(让你的IDEA有飞一般的感觉)

    下面就为您详细讲解“IDEA的基本使用(让你的IDEA有飞一般的感觉)”的完整攻略。 1. 什么是IDEA IntelliJ IDEA是一款由JetBrains公司开发的Java集成开发环境(IDE)。除了Java外,它还支持各种各样的编程语言,如Kotlin、Groovy和Scala等。在软件开发中,工具的重要性与代码编写同等重要,好的IDE可以帮助我们更…

    Java 2023年5月20日
    00
  • java获取本月日历表的方法

    要获取本月的日历表,可以使用Java中的Calendar类来实现。下面是详细步骤: 1.获取当前月份的第一天我们可以使用Calendar类的getActualMinimum()方法,将日历字段设置为该字段可能的最小值,例如我们将日历字段设置为月份的最小值,即Calendar.MONTH,然后使用getActualMinimum(Calendar.DATE)方…

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