链表和数组中浪费的空间

时间:2018-01-20 12:58:03

标签: arrays data-structures linked-list complexity-theory

在书中,链表,数组和动态数组之间存在比较。参数名称是浪费的空间。给出的值是:

  • array 0
  • 链表O(n)
  • 动态数组O(n)

什么是浪费的空间参数以及为什么它是链表的O(n)和数组的0?

2 个答案:

答案 0 :(得分:2)

我认为浪费的空间是数据结构分配的空间量减去存储其元素所需的空间量。

<强>阵列即可。通常,数组除了元素之外什么都不包含。有时它们会存储它们的大小,或者需要额外的内存来进行内存对齐。我认为声称阵列的'浪费空间'是O(1)是正确的。

关联列表。我们需要至少一个指针用于列表的每个元素。因此,我们有O(n)'浪费的空间'。

动态数组。当我们在增加动态数组的大小时没有足够的空间来存储所有元素时,我们需要额外的O(n)内存。我们需要分配一个新的内存缓冲区,然后将元素复制到这个缓冲区。此外,通常动态数组会通过大量额外内存进行调整(以进行摊销O(1)添加/删除操作)。浪费的内存大小也是O(n)

答案 1 :(得分:0)

设n为动态数组中的数据量,容量为可用内存量。然后n <=容量&amp;&amp; n> = capacity / 4,平均浪费空间量为n * 3 / 2~O(n)。