栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:声明大小为n的数组的大O时间是多少?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:声明大小为n的数组的大O时间是多少?

O(n)
。考虑以下简单程序:

public class ArrayTest {  public static void main(String[] args) {     int[] var = new int[5];  }}

生成的字节码为:

Compiled from "ArrayTest.java"public class ArrayTest extends java.lang.Object{public ArrayTest();  Code:   0:   aload_0   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V   4:   returnpublic static void main(java.lang.String[]);  Code:   0:   iconst_5   1:   newarray int   3:   astore_1   4:   return}

要看的

newarray
指令就是指令(只需搜索
newarray
)。从VM规范:

从垃圾收集堆中分配一个新数组,该数组的组件类型为type且长度计数。对该新数组对象的引用arrayref被推入操作数堆栈。
新数组的每个元素都被初始化为该数组类型的默认初始值(第2.5.1节)。

由于每个元素都已初始化,因此需要

O(n)
时间。

编辑

查看提供的链接amit,可以在恒定时间内以默认值实现数组初始化。所以我想它最终取决于JVM。您可以进行一些粗略的基准测试,看看是否是这种情况。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449500.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号