在java中从数组中检索元素的成本
我有一个非常基本的问题。 在java中(或者我认为对任何类似的语言都有效),从数组中检索元素的时间是多少。由于数组的大小及其元素类型是编译时已知或运行时计算的常数,我认为检索应该在常数时间O(1)中进行。比如
int[] arr = new int[10];
虽然我不确定数组的内部内存表示形式,但我认为像arr[3]这样的操作应该在根据数组开始地址、元素类型大小(此处32)和传递的索引(此处3)计算地址后直接访问内存,如下所示:
address of arr[3] = address of a[0] + 32 * 3.
谢谢你的帮助
# 1 楼答案
就像用户3580294所说的,它应该是O(1),因为你给了它你想要在数组中查看的确切位置,而不是迭代,当然是O(n)
# 2 楼答案
是的,是O(1)。更确切地说是:
O(k*1)) where k >some machine dependent constant