【问题标题】:What is the time complexity of deleting all array elements?删除所有数组元素的时间复杂度是多少?
【发布时间】:2019-05-18 14:06:53
【问题描述】:

众所周知,删除一个数组元素的时间复杂度是o(n),那么删除整个数组的时间复杂度是多少呢?

我认为是o(1),因为数组地址空间是连续的。我猜对了吗?

【问题讨论】:

  • 您说的是哪种编程语言?在例如C 或 Haskell,数组有固定的大小,所以你不能删除任何元素。
  • 我想这将取决于数组中存储的内容以及每个元素是否需要销毁才能删除数组的内存
  • @melpomene c 呢?
  • @richer:正如 melpomene 在第一条评论中已经写的那样,在 C 中,数组具有固定大小,因此您不能删除元素。
  • @Jörg W Mittag 系统回收阵列需要多长时间?

标签: arrays data-structures time-complexity


【解决方案1】:

删除数组本身将是 O(1),因为它只是将内存释放到池中,而删除数组中的每个项目将是 O(n),因为每个项目都需要单独删除。

也有例外,例如,某些实现可能会使用一种算法来清除大于数组中每个项目大小的块中的内存(这将是 O(n/c) 其中 c 是块的多少倍与数组中的项目相比),并且某些语言可能会简单地释放原始数组并让指针指向一个新的空数组,该数组将为 O(1)。然而,上面的答案是假设一个幼稚的实现。

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2011-09-03
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多