当前位置:   article > 正文

java查找算法(2大类)-你学会了吗?_java中查找的类是什么

java中查找的类是什么

在这里插入图片描述

1.二分查找(Binary Search)是一种高效的查找算法,用于在已排序的数组或列表中查找特定元素的位置。它通过重复将目标值与数组的中间元素进行比较,从而将查找范围逐渐缩小一半,直到找到目标值或确定目标值不存在。以下是Java中实现二分查找的示例代码:

public class BinarySearch {
    public static int binarySearch(int[] arr, int target) {
        int left = 0;
        int right = arr.length - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2;

            if (arr[mid] == target) {
                return mid; // 找到目标值,返回索引
            } else if (arr[mid] < target) {
                left = mid + 1; // 目标值在右半部分,更新左边界
            } else {
                right = mid - 1; // 目标值在左半部分,更新右边界
            }
        }

        return -1; // 目标值不存在,返回-1
    }

    public static void main(String[] args) {
        int[] arr = {11, 22, 34, 50, 64, 90};
        int target = 34;

        int result = binarySearch(arr, target);

        if (result == -1) {
            System.out.println("目标值 " + target + " 不存在数组中");
        } else {
            System.out.println("目标值 " + target + " 的索引为 " + result);
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

在上述代码中,binarySearch方法实现了二分查找算法。它使用两个指针left和right来表示查找范围的左右边界,然后在每次迭代中计算中间元素的索引mid。通过将目标值与中间元素进行比较,将查找范围逐渐缩小一半。如果找到目标值,返回其索引;如果查找范围缩小到左边界大于右边界,表示目标值不存在,返回-1。main方法中的示例展示了如何使用该算法在一个已排序的数组中查找目标值。

运行代码,你将看到查找结果的输出。二分查找算法的时间复杂度为O(logn),其中n是数组的大小。二分查找适用于已排序的数据集,可以快速定位目标值的位置。然而,要使用二分查找算法,必须确保数组已经按升序或降序排序。

2.线性查找(Linear Search)是一种简单直观的查找算法,用于在数组或列表中按顺序逐个查找目标元素的位置。它从数组的第一个元素开始,逐个比较元素的值,直到找到目标元素或遍历完整个数组。以下是Java中实现线性查找的示例代码:

public class LinearSearch {
    public static int linearSearch(int[] arr, int target) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == target) {
                return i; // 找到目标值,返回索引
            }
        }

        return -1; // 目标值不存在,返回-1
    }

    public static void main(String[] args) {
        int[] arr = {11, 22, 34, 50, 64, 90};
        int target = 34;

        int result = linearSearch(arr, target);

        if (result == -1) {
            System.out.println("目标值 " + target + " 不存在数组中");
        } else {
            System.out.println("目标值 " + target + " 的索引为 " + result);
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

在上述代码中,linearSearch方法实现了线性查找算法。它使用循环遍历数组中的每个元素,并将其与目标值进行比较。如果找到目标值,返回其索引;如果遍历完整个数组都没有找到目标值,返回-1。main方法中的示例展示了如何使用该算法在一个数组中查找目标值。

运行代码,你将看到查找结果的输出。线性查找算法的时间复杂度为O(n),其中n是数组的大小。线性查找适用于小型数据集或未排序的数据集,因为它需要逐个比较元素,其性能不如二分查找等更高级的查找算法。然而,线性查找是一种简单直观的查找方法,并且适用于各种情况下的查找需求。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/502613
推荐阅读
相关标签
  

闽ICP备14008679号