复杂性和大O.

时间:2013-02-13 05:33:33

标签: complexity-theory big-o

假设项目有足够的未使用空间,从而不需要重新调整大小,以下两种算法的最坏情况时间复杂度是多少?我最初的猜测是A会运行得更慢,因为它必须将每个元素移位以在索引[0]处添加新元素。我认为在最坏的情况下B是O(N ^ 2),但我不确定。

一个。

    for (int i = 0; i < N; i++)
        items.add(0, new Integer(i));

和B.

    for (int i = 0; i < N; i++)
        items.add(new Integer(i));

1 个答案:

答案 0 :(得分:0)

这实际上取决于用于存储项目的基础数据结构。如果使用链接列表,则在A中插入需要恒定时间,即O(1),而如果使用数组,则它将为O(n),因为您必须将每个元素向左移动1个位置以便为新项目。因此,如果使用链表,则循环将具有复杂度O(n),如果使用数组,则循环将具有O(n ^ 2)。

对于B,目前尚不清楚如何实现add函数,因此没有任何关于它的复杂性的说法。使用链表,数组或平衡树时,复杂性会有所不同。

相关问题