Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java快速查找算法


在 Java 中,有几种常见的快速查找算法,包括二分查找、哈希表查找以及树结构查找(如二叉搜索树)。下面我会为你介绍每种算法的步骤流程,并提供示例代码以及可能的 Maven 和 Gradle 依赖坐标。

二分查找(Binary Search)

二分查找适用于有序数组。它通过将查找范围逐步缩小一半来快速定位目标值。

步骤流程:

初始化左指针 left 和右指针 right,分别指向数组的第一个和最后一个元素。在循环中,计算中间索引 midmid = (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 依赖:

// 无需外部依赖

哈希表查找(Hash Table Lookup)

哈希表是一种基于键-值对存储数据的数据结构,通过哈希函数将键映射到存储位置,实现了快速的查找和插入。

步骤流程:

  1. 创建一个哈希表数据结构,选择合适的哈希函数。
  2. 将键-值对插入哈希表。
  3. 要查找一个值,使用哈希函数计算键的哈希值,然后找到对应的存储位置,返回关联的值。

示例代码:

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 依赖:

// 无需外部依赖

树结构查找(Tree-based Lookup)

树结构如二叉搜索树(Binary Search Tree,BST)可以用于快速查找、插入和删除操作。

步骤流程:

  1. 构建二叉搜索树。
  2. 对于查找操作,从根节点开始,根据比较结果选择向左子树还是向右子树移动,直到找到目标值或者到达叶子节点为止。

示例代码:

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 中常见的快速查找算法及其实现方式。你可以根据具体的场景选择适合的算法来进行快速查找。记得在实际项目中使用时,根据项目需要适当添加异常处理、错误处理以及代码优化。

查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算。折半查找的前提条件是需要有序表顺序存储,对于静态查找表,一 ...
在Java中,快速排序(QuickSort)是一种高效的排序算法,其平均时间复杂度为O(nlogn)。###示例代码这两种版本的快速排序均使 ...
在Java中,快速排序(QuickSort)是一种常用的排序算法,它基于分治策略,在平均情况下具有较好的性能。第一种方式提供了更多的控制和理 ...
###冒泡排序(BubbleSort)冒泡排序是一种简单的比较排序算法,它多次迭代列表,每次将相邻的元素进行比较并交换,直到整个列表有序。如 ...
排序算法分为两大类,一是内部排序,即数据记录在内存中进行排序,另一个是外部排序,主要是因排序的数据很大,一次不能容纳全部的排序记录,在排序过 ...