c++ - 推导以下代码的执行时间增长率(BigO)

标签 c++

这段代码的执行时间增长率Big O是多少?

void doDiff(int setA[], int setB[], int sizeA, int sizeB)   {

   const int MAX = 10; 
   // validate setA and setB 
   if ((sizeA == 0) && (sizeB == 0))                    
         cout << "both sets are empty " << endl;    
   else
         cout << "symmetric difference: { " ;   

   for (int i = 0;  i <  sizeA;  i++ )            
       if (!member(setB, setA[i],sizeB))        
              cout << setA[i] << " ";           

   for (int i = 0;  i <  sizeB;i++ )            
       if (!member(setA, setB[i],sizeA))            
              cout << setB[i] << " ";                

   cout << "}" << endl;                 
}

bool member(int set[], int n, int size)
{
    for (; size > 0;  size--)               
        if (set[size-1] == n)                       
            return true;                    
  return false;         
}

当我计算这段代码的大 O 时,我得到 O(N*N*N) || O(N^3) 我不确定这段代码的确切执行时间增长率是多少。 请帮我。

提前致谢

最佳答案

用问题来填充答案似乎不合适,但由于这听起来像是家庭作业,我认为它们是实现目标的更好方法(让您弄清楚这是如何工作的):

  1. member 的“big-O”是什么?这很重要,因为 doDiff 非常依赖它。
  2. doDiff 调用了多少次 member
  3. 如果对member 的每次调用都花费相同的时间,则member 为O(X),并且doDiff 调用member Y 次,doDiff 的“big-O”是什么?

关于c++ - 推导以下代码的执行时间增长率(BigO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23203768/

相关文章:

c++ - '_nextafter' 未声明 : CGAL in Qt Creator with Windows 8. 1

c++ - 如何将一个boost log core公开并注册到另一个

c++ - 用作堆栈的 std::vector 和 std::stack 之间是否存在任何复杂性差异?

c++ - 好的在线 C++ 语法引用?

C++ - 基类数组的基本错误

c++ - 自定义 QListView 中项目的图标和文本位置的正确方法是什么?

c++ - 什么消息导致按钮发送 WM_COMMAND 消息

c++ - OpenGL 翻译错误,C1068 和 C2003

c++ - 在类模板中正确初始化静态 constexpr 数组?

c++ - 接收消息频率高,请求 'best'线程模型