【问题标题】:Time complexity of set method in ArrayList in Java [duplicate]Java中ArrayList中set方法的时间复杂度[重复]
【发布时间】:2022-10-08 00:58:23
【问题描述】:

Java中ArrayList中set方法的时间复杂度是多少?是 O(1) 还是 O(n)?作为我达到任何索引的考虑,它需要 O(1) 并且更新 O(1),所以它是 O(1) 吗?我在很多地方也看到了 O(n)。

【问题讨论】:

  • 你能具体说明哪几个地方吗?
  • 你好,欢迎光临!请熟悉如何提问How do I ask a good question? 的指南。
  • ArrayList 的方法 set() 运行在恒定时间,即它的时间复杂度是O(1).因为它由数组支持,并且访问数组的特定索引是恒定时间手术。
  • 为什么set() 方法(假设是“Set 方法”)需要 O(n) 使用其索引在数组中设置一个值?来自documentation:"添加操作在摊销常数时间内运行,即添加 n 个元素需要 O(n) 时间。所有其他操作都以线性时间运行"
  • “我在很多地方也看到了你(和)”- 在哪里???

标签: java list arraylist data-structures time-complexity


【解决方案1】:

ArrayLists 是随机访问数据结构,因此要设置特定的单元格,将是O(1). 这是来自 ArrayList 类的代码。

public E set(int index, E element) {
        Objects.checkIndex(index, size);
        E oldValue = elementData(index);
        elementData[index] = element;
        return oldValue;
}

【讨论】:

    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 2012-02-25
    • 2018-09-14
    相关资源
    最近更新 更多