Java中的搜索算法 | AI生成和翻译

Home 2025.02

搜索的核心在于高效地查找数据。让我们来探讨二分查找和线性查找。

1. 二分查找:对数级效率

二分查找适用于已排序数组,每一步都将搜索空间减半,时间复杂度为 O(log n)。

Java 实现

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

    public static void main(String[] args) {
        int[] arr = {2, 3, 4, 10, 40, 50};
        int target = 10;
        System.out.println("Found at: " + binarySearch(arr, target));
    }
}

输出: Found at: 3

2. 线性查找:基础基准

线性查找按顺序检查每个元素,时间复杂度为 O(n)——适用于未排序数据。

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;
    }

    public static void main(String[] args) {
        int[] arr = {10, 20, 80, 30, 60, 50, 110};
        int target = 30;
        System.out.println("Found at: " + linearSearch(arr, target));
    }
}

输出: Found at: 3


Back Donate