【发布时间】:2013-03-21 12:49:24
【问题描述】:
当我遇到这段代码时,我正在为 UIL 进行计算机科学实践测试(Structure<E> 类中有更多方法,但它们似乎与问题无关):
public class Structure<E>
{
private E data;
private Structure<E> s;
Structure(E d)
{
data = d;
}
public void add(E d)
{
if (s == null)
s = new Structure<E>(d);
else
s.add(d);
}
}
// Client method
public Structure<Integer> demo(int[] vals)
{
Structure<Integer> s;
s = new Structure<Integer>(vals[0]);
for (int i = 0; i < vals.length; i++)
s.add(vals[i]);
return s;
}
所以问题要求我确定demo() 客户端方法的最严格的复杂性。我阅读了大 O 表示法(当然是在参加测试之前!),它说单循环操作,例如将元素逐个添加到列表中,应该具有线性复杂度,或 O(N)强>。
然而,正确答案实际上是 O(N^2)。我很困惑为什么会这样,有人能给我解释一下吗?因为我认为 O(N^2) 复杂性在 nested for 循环中很常见...
【问题讨论】:
标签: for-loop big-o time-complexity