当前位置: 首页 > 面试题库 >

时间复杂度或隐性成本 Java中的.length

阎弘
2023-03-14
问题内容

我在看一个用Java开发的项目,发现了一个for如下所示的循环:

for(int i=1; i<a.length; i++)
{
    ...........
    ...........
    ...........
}

我的问题是:计算a.length(这里的a是数组名)是否昂贵?如果否,那么如何a.length在内部进行计算(意味着JVM如何确保O(1)对此进行访问)?是类似于:

int length = a.length;
for(int i=1; i<length; i++)
{
    ...........
    ...........
    ...........
}

即就像访问函数内部的局部变量的值。谢谢。


问题答案:

我的问题是:计算a.length是否昂贵

否。它只是阵列上的一个字段(请参见JLS第10.7节)。它并不昂贵,并且JVM知道它永远不会改变,并且可以适当地优化循环。(实际上,我希望一个好的JIT能够注意到使用非负数初始化变量的正常模式,检查它是否小于length,然后访问数组-
如果它注意到,则可以删除数组边界检查。)



 类似资料:
  • 我想知道整数的时间复杂度。tobinarysting()。

  • 问题内容: 是Java中的数组还是列表?什么是get操作的时间复杂度,是它还是? 问题答案: 一个在Java是一种由一个支持。 该方法是恒定时间的操作。 直接从Java库获取以下代码: 基本上,它只是直接从后备数组中返回一个值。()也是固定时间)

  • Java中Math.sqrt实现的时间复杂性是什么?Java在某种技术中实现了时间复杂性,我正在试图确定这些技术的时间复杂性。

  • 主要内容:时间复杂度,空间复杂度《 算法是什么》一节提到,解决一个问题的算法可能有多种,这种情况下,我们就必须对这些算法进行取舍,从中挑选出一个“最好”的。 算法本身是不分“好坏”的,所谓“最好”的算法,指的是最适合当前场景的算法。挑选算法时,主要考虑以下两方面因素: 执行效率:根据算法所编写的程序,执行时间越短,执行效率就越高; 占用的内存空间:不同算法编写出的程序,运行时占用的内存空间也不相同。如果实际场景中仅能使用少量的内

  • 我已经阅读了这么多的资源,但仍然无法理解什么是时间复杂性。我阅读的参考资料基于各种公式,我理解用于表示时间复杂性,但我不知道如何表示。谁能请解释这个原则,以一个可以理解的明确的方式请给我。

  • 有人能帮我了解一下这个代码片段的时间和空间复杂性吗?请参考leetcode问题-单词中断II。给定一个非空字符串s和一个包含非空单词列表的字典单词dict,在s中添加空格来构造一个句子,其中每个单词都是有效的字典单词。返回所有这些可能的句子。