在 Java 中,有几种常见的快速查找算法,包括二分查找、哈希表查找以及树结构查找(如二叉搜索树)。下面我会为你介绍每种算法的步骤流程,并提供示例代码以及可能的 Maven 和 Gradle 依赖坐标。
二分查找适用于有序数组。它通过将查找范围逐步缩小一半来快速定位目标值。
步骤流程:
初始化左指针 left 和右指针 right,分别指向数组的第一个和最后一个元素。在循环中,计算中间索引 mid:mid = (left + right) / 2。比较中间元素和目标值:* 如果中间元素等于目标值,返回索引 mid。
* 如果中间元素小于目标值,说明目标值可能在右半部分,更新 left = mid + 1。
* 如果中间元素大于目标值,说明目标值可能在左半部分,更新 right = mid - 1。
重复步骤 2 和 3,直到 left 大于 right,此时查找失败。示例代码:
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; // Target not found
    }
    public static void main(String[] args) {
        int[] sortedArray = {1, 3, 5, 7, 9, 11, 13, 15, 17};
        int target = 7;
        int index = binarySearch(sortedArray, target);
        if (index != -1) {
            System.out.println("Target found at index " + index);
        } else {
            System.out.println("Target not found");
        }
    }
}
Maven 依赖:
<!-- 无需外部依赖 -->
Gradle 依赖:
// 无需外部依赖
哈希表是一种基于键-值对存储数据的数据结构,通过哈希函数将键映射到存储位置,实现了快速的查找和插入。
步骤流程:
示例代码:
import java.util.HashMap;
import java.util.Map;
public class HashTableLookup {
    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("one", 1);
        hashMap.put("two", 2);
        hashMap.put("three", 3);
        String keyToSearch = "two";
        if (hashMap.containsKey(keyToSearch)) {
            int value = hashMap.get(keyToSearch);
            System.out.println(keyToSearch + " maps to " + value);
        } else {
            System.out.println("Key not found");
        }
    }
}
Maven 依赖:
<!-- 无需外部依赖 -->
Gradle 依赖:
// 无需外部依赖
树结构如二叉搜索树(Binary Search Tree,BST)可以用于快速查找、插入和删除操作。
步骤流程:
示例代码:
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    public TreeNode(int val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }
}
public class BinarySearchTree {
    public static TreeNode search(TreeNode root, int target) {
        if (root == null || root.val == target) {
            return root;
        }
        if (target < root.val) {
            return search(root.left, target);
        } else {
            return search(root.right, target);
        }
    }
    public static void main(String[] args) {
        TreeNode root = new TreeNode(10);
        root.left = new TreeNode(5);
        root.right = new TreeNode(15);
        root.left.left = new TreeNode(3);
        root.left.right = new TreeNode(8);
        int target = 8;
        TreeNode result = search(root, target);
        if (result != null) {
            System.out.println("Target found: " + result.val);
        } else {
            System.out.println("Target not found");
        }
    }
}
Maven 依赖:
<!-- 无需外部依赖 -->
Gradle 依赖:
// 无需外部依赖
这些是在 Java 中常见的快速查找算法及其实现方式。你可以根据具体的场景选择适合的算法来进行快速查找。记得在实际项目中使用时,根据项目需要适当添加异常处理、错误处理以及代码优化。