有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中从数组中检索元素的成本

我有一个非常基本的问题。 在java中(或者我认为对任何类似的语言都有效),从数组中检索元素的时间是多少。由于数组的大小及其元素类型是编译时已知或运行时计算的常数,我认为检索应该在常数时间O(1)中进行。比如

int[] arr = new int[10];

虽然我不确定数组的内部内存表示形式,但我认为像arr[3]这样的操作应该在根据数组开始地址、元素类型大小(此处32)和传递的索引(此处3)计算地址后直接访问内存,如下所示:

address of arr[3] = address of a[0] + 32 * 3.

谢谢你的帮助


共 (2) 个答案

  1. # 1 楼答案

    就像用户3580294所说的,它应该是O(1),因为你给了它你想要在数组中查看的确切位置,而不是迭代,当然是O(n)

  2. # 2 楼答案

    是的,是O(1)。更确切地说是:O(k*1)) where k >some machine dependent constant