大阵列中 1 的 Theta

Theta of 1 in big arrays

如果我成功分配了一个包含1,000,000,000个成员的数组,如何访问Theta of 1中索引999,999,999中的成员? 根据数组属性,每个成员的访问权限应该是 1 的 Theta。但是,是否存在某种内部循环来计算索引直到到达所需的成员?如果有,不应该是n的Theta吗?

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

实际上,您不太可能拥有包含十亿个元素的数组。数组不太适合这么大的数据集,因为它们的大小可能达到几千兆字节或更多。通常采用更复杂的数据结构 and/or 算法。例如,一个简单的程序可能会将一个 2GB 的文件读取到一个 2GB 的字节数组中,而更聪明的程序会以小块的形式读取它,比如一次 4KB。

它实际上只在 (1) 的 theta 中。当你声明 arr=int[100000000] arr var 将存储内存分配的首地址。 当你做arr[n]的时候,它做的是*(arr+n)直接把n加到起始地址,直接访问数组。 数组始终仅以顺序方式存储。 欲了解更多信息,请阅读 https://www.ics.uci.edu/~dan/class/165/notes/memory.html 如果需要,请在评论中询问更多资源。