Big o 这个大O符号是什么?

Big o 这个大O符号是什么?,big-o,Big O,这个大O符号是什么?我知道setSearch()和removeAt()的顺序是O(n)(假设两者都是)。我知道,如果没有for循环,它肯定是O(n),但是我弄不清楚如何计算加入for循环后它会变成什么。我的数学不是很好。。。所以是O(n^2)吗 public void removeAll(DataElement clearElement) { 如果(长度==0) System.err.println(“无法从空列表中删除”); 其他的 { for(int i=0;i

这个大O符号是什么?我知道setSearch()和removeAt()的顺序是O(n)(假设两者都是)。我知道,如果没有for循环,它肯定是O(n),但是我弄不清楚如何计算加入for循环后它会变成什么。我的数学不是很好。。。所以是O(n^2)吗

public void removeAll(DataElement clearElement)
{
如果(长度==0)
System.err.println(“无法从空列表中删除”);
其他的
{
for(int i=0;i
如果removeAt()和seqSearch()相对于列表的长度是O(n),那么是的,该算法的顺序是O(n^2)。这是因为在for循环中,您每次都调用seqSearch,并可能调用removeAt(loc)。这意味着对于每个迭代,您将执行n个或2n个操作。在最坏的情况下,您有2n^2个操作,即O(n^2)。

取决于seqSearch和removeAt的成本有多大。更合理的是,如果removeAt()的顺序为O(1),那么它会变成O(n)的顺序吗?或者仍然是O(n^2)?@diskotech是的,仍然是O(n^2),因为最坏的情况仍然是每次迭代运行seqSearch n次。最坏情况复杂度为2n^2和100n^2的算法都是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;
             }
         } 
     } 
}