大数组中的Theta为1

时间:2018-04-20 14:48:28

标签: arrays data-structures complexity-theory

如果我成功分配了1,000,000,000个成员的数组,我如何以1的Theta中的索引999,999,999访问成员? 根据数组属性,每个成员的访问权应该是Theta为1.但是,是否有某种内部循环计算索引直到它到达所需成员?如果有,那不应该是n?的Theta

2 个答案:

答案 0 :(得分:1)

不,没有内部循环。数组是随机访问,意味着任何元素都可以在Θ(1)时间内访问。所有计算机必须做的是获取数组的起始地址,向所需元素添加偏移量,并在计算的地址处查找值。

实际上,你不太可能拥有一个拥有十亿个元素的数组。阵列不太适合这种大型数据集,因为它们的大小只有几千兆字节或更多。通常采用更复杂的数据结构和/或算法。例如,一个天真的程序可能会将2GB的文件读入2GB的字节数组,而更聪明的程序会以小块的形式读取它,例如每次4KB。

答案 1 :(得分:1)

实际上只在(1)的θ中。当你宣布arr=int[100000000]时 arr var将存储内存分配的第一个地址。 执行arr[n]时它*(arr+n)直接将n添加到起始地址并直接访问数组。 数组总是仅以序列方式存储。 欲了解更多信息,请阅读https://www.ics.uci.edu/~dan/class/165/notes/memory.html 如果需要,请在评论中提供更多资源。