查找 Java 中数组元素的索引2024年9月10日 | 阅读10分钟 在本教程中,我们将了解如何在 Java 中查找数组元素的索引。为避免混淆,我们将假设数组中的所有元素都是唯一的。换句话说,没有元素会出现一次以上。在输入中,我们会得到一个数组和一个数字 k。我们需要找到数组中元素 k 的索引。如果数组中不存在数字 k,则应显示适当的消息。请考虑零索引。 输入 int arr[] = {4, 3, 6, 7, 10, 17, 13, 19}, k = 7 输出:元素 7 的索引是 3。 解释:从左边开始,元素 7 的索引是 3。 示例 2 输入 int arr[] = {67, 23, 89, 30, 35, 1, 69, 90, 43, 61}, k = 11 输出:在输入数组中未找到元素 11。 解释:输入数组中不存在元素 11。因此,无法找到其索引。 方法:线性搜索线性搜索方法很简单。使用循环遍历数组,并检查是否找到元素 k。如果找到,则返回其索引。循环变量此时包含的值就是元素 k 的索引。如果循环结束后仍未找到该元素,则显示适当的消息。 文件名:ArrayElementIndexRecursion.java 输出 For the following array: 4 3 6 7 10 17 13 19 The element 7 is found at the index 3 For the following array: 67 23 89 30 35 1 69 90 43 61 The element 11 is not found. 复杂度分析:程序的 time complexity 为 O(n),其中 n 是输入数组中存在的元素总数。程序的 space complexity 为 O(1),因为程序中没有使用额外的空间。 方法:使用二分搜索二分搜索方法仅在输入数组按升序或降序排序时有效。在复杂度方面,二分搜索优于线性搜索。 文件名:ArrayElementIndexBinarySearch.java 输出 For the following array: 4 3 6 7 10 13 17 19 The element 7 is found at the index 3 For the following array: 1 23 30 35 43 61 67 69 89 90 The element 11 is not found. 复杂度分析:程序的 time complexity 为 O(log(n)),其中 n 是输入数组中存在的元素总数。程序的 space complexity 为 O(1),因为程序中没有使用额外的空间。 方法:使用 Guava 库Guava 库是由 Google 工程师开发的库。Guava 库提供了各种与原始类型相关的实用程序类,例如 Longs 用于 long、Doubles 用于 double。Ints 用于 int 等。每个实用程序类都有 indexOf() 方法,该方法返回数组中元素第一次出现的位置。 文件名:ArrayElementIndexGuavaLib.java 输出 For the following array: 4 3 6 7 10 17 13 19 The element 7 is found at the index 3 For the following array: 67 23 89 30 35 1 69 90 43 61 The element 11 is not found. 解释:仅当我们将在 guava.jar 文件包含在类路径中时,import 语句才能正常工作。我们已像下面这样编译和运行了该程序。 对于编译过程,我们使用了以下命令 javac -cp ".;/guava.jar" ArrayElementIndexGuavaLib.java 对于运行程序,我们使用了 java -cp ".;/guava.jar" ArrayElementIndexGuavaLib. 可以从 此处 下载 guava.jar 文件。 复杂度分析:程序的 time complexity 为 O(N),因为 Ints.indexOf 的时间复杂度为 O(N),其中 N 是数组中存在的元素总数。程序的 space complexity 为 O(1)。 方法:使用 Stream APIStream 是 Java 8 中引入的新抽象层。在 Stream 中,您可以以声明式方式处理数据,类似于 SQL 语句的处理方式。使用 Stream 包的 IntStream 实用程序,可以找到元素的索引。请参见以下内容。 文件名:ArrayElementIndexStream.java 输出 For the following array: 4 3 6 7 10 17 13 19 The element 7 is found at the index 3 For the following array: 67 23 89 30 35 1 69 90 43 61 The element 11 is not found. 复杂度分析:程序的 time complexity 和 space complexity 与上一个程序相同。 方法:使用 ArrayList我们可以使用 ArrayList 类的内置方法来实现我们的目标。ArrayList 的 indexOf() 方法非常方便。 文件名:ArrayElementIndexArrayList.java 输出 For the following array: 4 3 6 7 10 17 13 19 The element 7 is found at the index 3 For the following array: 67 23 89 30 35 1 69 90 43 61 The element 11 is not found. 复杂度分析:程序的 time complexity 为 O(N),因为程序中使用了单个 for 循环。程序的 space complexity 也为 O(N),因为我们使用 ArrayList 来存储输入数组的元素。N 是输入数组中存在的元素总数。 方法:使用递归使用递归,也可以找到元素的索引。元素的迭代是通过递归完成的。 文件名:ArrayElementIndexArrayList.java 输出 For the following array: 4 3 6 7 10 17 13 19 The element 7 is found at the index 3 For the following array: 67 23 89 30 35 1 69 90 43 61 The element 11 is not found. 复杂度分析:程序的 time complexity 为 O(N),因为程序中使用了单个 for 循环。程序的 space complexity 也为 O(N),因为我们使用 ArrayList 来存储输入数组的元素。N 是输入数组中存在的元素总数。 下一个主题Java 中的标记-清除垃圾回收算法 |
一个常见的计算问题是求给定数字集合的平均值,这在数据分析、统计和工程中具有多种用途。虽然这个问题有时可以通过循环或某些内置函数解决,但它也可以通过递归来解决……
阅读 4 分钟
机器学习是人工智能(AI)的一个领域,专注于使计算机能够学习和进行非正式预测或决策的算法和模型。它涉及开发和训练计算机系统,使其能够自动从大量的内部数据中学习和分析……
18 分钟阅读
1997 年,Sun Microsystems 和 IBM 决定解决软件的访问启用问题。他们的目标是开发一种可访问性 API,应用程序开发人员可以将其实现到 Java 类库中,以使应用程序可访问。结果,Sun Microsystems 编写了可访问性 API 和...
阅读 3 分钟
在 Java 8 中,anyMatch() 是在 Stream 接口中定义的一个方法。它执行一个短路终端操作。在本节中,我们将通过一个示例讨论 Java 8 Stream 中的 anyMatch() 方法。在进入正题之前,我们将首先理解中间和...
5 分钟阅读
向量是既有大小又有方向的数学实体。在计算机编程中,向量通常用于表示同时具有大小和方向的量,例如速度、力、位移。Java 作为一种流行的面向对象编程语言,通过……为向量运算提供了内置支持。
阅读 8 分钟
在 Java 中,compareToIgnoreCase() 方法属于 String 类,该类属于 java.lang 包。它用于通过忽略大小写差异来比较任何两个字符串。该方法使用每个字符的 Unicode 值进行字符串比较……
5 分钟阅读
这是 Google、Amazon、TCS、Accenture、Flipkart 等顶级 IT 公司面试中经常提出的问题。通过解决问题,人们希望检查应聘者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将...
阅读 6 分钟
Amazon Web Services (AWS) 提供了许多服务,使企业能够在云中开发、部署和管理应用程序和基础设施。监控这些资源以确保它们可靠高效地运行非常重要。AWS CloudWatch 是一种监控服务,它收集和跟踪...
5 分钟阅读
在 Java 中,单例模式和静态类用于控制实例创建和对类级别行为的访问,但它们的作用不同,并且具有不同的特性。单例模式 Java 中的单例模式是一种设计模式,它保证只有一个实例……
阅读 6 分钟
许多程序员在参加编程竞赛时会遇到“Time Limit Exceeded”(TLE)错误,这使得他们难以评估解决方案的有效性。由于效率低下的方法、过多的循环或不必要的计算,程序运行时间过长,就会出现“Time Limit Exceed”问题。为了克服……
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India