前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java的搜索算法

java的搜索算法

原创
作者头像
堕落飞鸟
发布2023-04-02 10:26:27
5450
发布2023-04-02 10:26:27
举报
文章被收录于专栏:飞鸟的专栏

Java 中常见的搜索算法包括线性搜索和二分搜索。线性搜索是一种简单的搜索算法,但其时间复杂度较高,适用于小数据量的情况;而二分搜索则能在有序数组中较快地查找目标元素。

线性搜索

线性搜索,也称为顺序搜索,是一种从数据集开头开始逐个检查元素的搜索算法。在 Java 中,我们可以使用 for 循环来实现线性搜索。

Java 实现代码:

代码语言:javascript
复制
public static int linearSearch(int[] arr, int target) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == target) {
            return i;
        }
    }
    return -1;
}

二分搜索

二分搜索是一种在有序数组中查找目标元素的算法。二分搜索通过反复将待查找区间折半,缩小搜索范围来逐步接近目标元素。具体实现中,我们可以使用 while 循环和递归两种方式。

2.1 while 循环实现

Java 实现代码:

代码语言:javascript
复制
public static int binarySearch(int[] arr, int target) {
    int left = 0;
    int 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;
}

2.2 递归实现

Java 实现代码:

代码语言:javascript
复制
public static int binarySearchRecursive(int[] arr, int target, int left, int right) {
    if (left > right) {
        return -1;
    }
    int mid = (left + right) / 2;
    if (arr[mid] == target) {
        return mid;
    } else if (arr[mid] < target) {
        return binarySearchRecursive(arr, target, mid + 1, right);
    } else {
        return binarySearchRecursive(arr, target, left, mid - 1);
    }
}

以上是 Java 中常用的搜索算法及其实现。需要根据实际情况选择合适的搜索算法,以获得更好的效率。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线性搜索
  • 二分搜索
  • 2.1 while 循环实现
  • 2.2 递归实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档