代码之家  ›  专栏  ›  技术社区  ›  shir k

大阵列中1的θ

  •  1
  • shir k  · 技术社区  · 6 年前

    如果我成功分配了一个100000000个成员的数组,我如何访问1θ中索引9999999中的成员? 根据数组属性,每个成员的访问权限应为θ1。然而,难道没有某种内部循环来计算索引,直到它到达所需的成员吗?如果有,是不是应该是n的θ?

    2 回复  |  直到 6 年前
        1
  •  1
  •   John Kugelman    6 年前

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

    实际上,您不太可能拥有一个包含十亿个元素的数组。阵列不太适合如此大的数据集,因为它们的大小可能会达到几GB或更多。通常采用更复杂的数据结构和/或算法。例如,一个天真的程序可能会将一个2GB的文件读入2GB字节数组,而一个更聪明的程序则会将其分小块读取,比如每次读取4KB。

        2
  •  1
  •   Rick_C137 Bill Lynch    6 年前

    它实际上只在(1)的θ中。当您申报时 arr=int[100000000] arr var将存储内存分配的第一个地址。 当你这样做的时候 arr[n] 它的作用是 *(arr+n) 直接将n添加到起始地址并直接访问阵列。 数组始终仅按顺序存储。 欲了解更多信息,请阅读 https://www.ics.uci.edu/~dan/class/165/notes/memory.html 如果需要,请在评论中询问更多资源。