这会有什么大O符号?我知道setSearch()和removeAt()是O(n)的顺序(假设它们是两种方式)。我知道没有for循环它肯定是O(n),但我很困惑如何计算它被抛入其中的for循环。我在数学上的表现并不是那么好......所以。它会是O(n ^ 2)吗?
public void removeAll(DataElement clearElement)
{
if(length == 0)
System.err.println("Cannot delete from an empty list.");
else
{
for(int i = 0; i < list.length; i++)
{
loc = seqSearch(clearElement);
if(loc != -1)
{
removeAt(loc);
--i;
}
}
}
}
答案 0 :(得分:2)
如果removeAt()和seqSearch()相对于列表的长度是O(n),那么是,该算法的顺序为O(n ^ 2)。这是因为在for循环中你每次都调用seqSearch,有可能调用removeAt(loc)。这意味着对于每次迭代,您要执行n或2n次操作。在最坏的情况下,您有2n ^ 2个操作,即O(n ^ 2)。