Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,因此它是on-topic,用于堆栈溢出。
2年前关闭。
这是我的程序:
如果我取m = 16且n = 2,则循环执行7次。
如果我取m = 16且n = 12,则循环执行3次。
如何为该程序提供更准确的时间复杂度,以及对于我们有两个输入的这种类型的算法,计算时间复杂度的过程是什么?
想改善这个问题吗? 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=1
,m=k
(对称地为n=k
,m=1
),这给了我们精确的k
迭代(下界)。
关于c - 该算法更精确的时间复杂度是什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52848847/
10-16 11:06