Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,因此它是on-topic,用于堆栈溢出。
                        
                        2年前关闭。
                                                                                            
                
        
这是我的程序:

 for(m!=n){
   if(m>n)
     m=m-n;
   else
     n=n-m;
 }


如果我取m = 16且n = 2,则循环执行7次。
如果我取m = 16且n = 12,则循环执行3次。
如何为该程序提供更准确的时间复杂度,以及对于我们有两个输入的这种类型的算法,计算时间复杂度的过程是什么?

最佳答案

假设m,n > 0,则时间复杂度为O(max(n,m))(或等效地为O(n+m))。

原因是:


在每次迭代中,n都会减少,或者m会减少,因此最多只能有n + m个迭代(上限)。
我们可以介绍最坏的情况n=1m=k(对称地为n=km=1),这给了我们精确的k迭代(下界)。

关于c - 该算法更精确的时间复杂度是什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52848847/

10-16 11:06