Java 使用迭代器的向量BigO

Java 使用迭代器的向量BigO,java,vector,big-o,Java,Vector,Big O,我做了一些研究,但没有找到一篇好文章。 我将多个向量添加到一个向量,然后打印它: Iterator it =vector.iterator(); while(it.hasNext()){ System.out.println(it.next()); } 如何确定此函数的大O表示法? 例如,如果输出为: [某物,某物,某物][某物, 某物,某物,某物][某物, 某物,某物,某物,某物] [某物,某物,某物,某物,某物, 某物][某物,某物,某物, 某物,某物,某物

我做了一些研究,但没有找到一篇好文章。
我将多个
向量
添加到一个
向量
,然后打印它:

Iterator it =vector.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
    }
如何确定此函数的大O表示法?
例如,如果输出为:

[某物,某物,某物]
[某物, 某物,某物,某物]
[某物, 某物,某物,某物,某物]
[某物,某物,某物,某物,某物, 某物]
[某物,某物,某物, 某物,某物,某物,某物]


我不明白的是,每一行都是一个向量,对于主向量我们需要一个循环,但是对于其中的向量我们不需要一个循环,为什么?

当你调用集合上的
toString
时(比如
向量
),你会得到一个逗号分隔的列表,用方括号括起来,该集合中每个元素的
toString


因此,您的代码所做的是在主
Vector
中的每个
Vector
上调用
toString
,然后在每个元素上调用
toString
。因此,效率是O(n),其中n是调用
toString
的对象总数。

对集合调用
toString
时(如
向量
),会得到一个逗号分隔的列表,用方括号括住该集合中每个元素的
toString


因此,您的代码所做的是在主
Vector
中的每个
Vector
上调用
toString
,然后在每个元素上调用
toString
。因此效率是O(n),其中n是调用
toString
的对象总数。

假设您一直遵循这个“阶梯模式”:

如果第一个向量的大小为1,最后一个向量的大小为K,则使用求和公式,复杂度为:

K*(K+1)/2
K*N
现在,如果第一个向量的大小是k
K(K+1)/2 - (k-1)(k)/2
最后,如果我们没有“阶梯模式”,但是N个大小小于K的向量,那么复杂性为:

K*(K+1)/2
K*N

希望有帮助。

假设您一直遵循这种“阶梯模式”:

如果第一个向量的大小为1,最后一个向量的大小为K,则使用求和公式,复杂度为:

K*(K+1)/2
K*N
现在,如果第一个向量的大小是k
K(K+1)/2 - (k-1)(k)/2
最后,如果我们没有“阶梯模式”,但是N个大小小于K的向量,那么复杂性为:

K*(K+1)/2
K*N

希望有帮助。

O(n)
,其中
n
是向量的大小。就这么简单。问题有点不清楚。如果您想在打印中使用大O符号,只需查看正在执行的操作数。假设向量中有N个元素,打印输出将有O(N)作为渐近等价(即大O表示法)。那么主向量中的其他向量呢?
O(N)
,其中
N
是向量的大小。就这么简单。问题有点不清楚。如果您想在打印中使用大O符号,只需查看正在执行的操作数。假设向量中有N个元素,打印输出将有O(N)作为渐近等价(即大O符号)。那么主向量中的其他向量呢?因此每个
vector.get(i)
将返回该索引中的元素。
toString()
?因此每个
vector.get(i)
将返回该索引中的元素。
toString()