java - 通用堆栈构造函数的 Big-O

标签 java stack big-o

以下代码包含用户创建的堆栈数据结构的两个构造函数。

 public class ArrayStack<T> implements BoundedStackInterface<T> {
    protected T[] stack;
    public final int defCap = 100;
    public ArrayStack() {
       stack = (T[]) new Object[defCap];
    }
 }

 public class ArrayStack<T> implements BoundedStackInterface<T> {
    protected T[] stack;
    public ArrayStack(int maxSize) {
       stack = (T[]) new Object[maxSize];
    }
 }

现在,在我的书中,这两个构造函数的 Big(O) 被描述为 O(N),但我们的讲师试图告诉我们它们应该是 O(1)强>.

有人介意向我解释一下为什么它是O(N)而不是O(1)吗?

最佳答案

构造函数根据数组的长度分配内存量,数组被定义为构造函数的参数。分配此内存所需的时间与所分配的数组大小(以及内存量)成线性关系,因此 O(n)O(1) 意味着可以在恒定的时间内分配内存,而与数组的大小无关,这是不可能的。

关于java - 通用堆栈构造函数的 Big-O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19608704/

相关文章:

java - PPGool 'SHOW pool_nodes' 通过 jdbc 返回 'ERROR: unrecognized configuration parameter "pool_nodes"'

javascript - 递归 setTimeout 使堆栈增长

react-native - react 原生 : TypeError: undefined is not an object (evaluating 'this.props.navigation.navigate' )

java - 嵌套循环的大 O 表示法

algorithm - 确定该算法的 Big-O

java - 如何在 Spring Data JPA 中保存期间避免选择语句

java - 文本框如何识别数据类型并自动完成它

java - 我如何证明类加载在 Java 中只发生一次?

java - 如何在 main 中使用整数值创建堆栈而不固定大小

algorithm - 该算法的大 O 表示法是什么?