Algorithm 整个算法的时间复杂度是多少?
我不熟悉渐近符号,这里是算法。时间复杂度最糟糕的情况是什么?为什么Algorithm 整个算法的时间复杂度是多少?,algorithm,math,big-o,asymptotic-complexity,mod,Algorithm,Math,Big O,Asymptotic Complexity,Mod,我不熟悉渐近符号,这里是算法。时间复杂度最糟糕的情况是什么?为什么 F(A,B) { //A and B are positive while A>0 print(A mod B) A=A div B } 这方面的时间复杂性: F(A,B) { //A and B are positive while A>0 A=A/B } 等于循环将执行的次数,我们称之为l,等于B除以A使“A>0”为false的次数 由此可知: Knuth的书《计算机编
F(A,B) { //A and B are positive
while A>0
print(A mod B)
A=A div B
}
这方面的时间复杂性:
F(A,B) { //A and B are positive
while A>0
A=A/B
}
等于循环将执行的次数,我们称之为l
,等于B除以A使“A>0”为false的次数
由此可知:
Knuth的书《计算机编程的艺术》(第2卷)4.3.1中的算法D在O(m)步中执行任何长除法,其中m
是A的位数,因此我们有一个上限
因此,时间复杂度为:*O(l*m)*
现在:
print(A mod B)
假设IO是常数(这在现实世界中当然是不正确的),你需要模本身的复杂性,从中我们知道它是:
O(日志A日志B)
并将运行l
次
因此,我们:
这不是一个很好的问题。首先,如果B是统一的,那么算法将永远不会完成。假设B必须是2或更大。所以我们有O(loga)步。但现在的问题是,该司本身是否是一项“行动”。如果A和B是无界的,那么从本质上讲它也必须是对数的。但通常情况下,代码将运行在以32位或64位实现所有除法的处理器上,并且不能将超出范围的数字除法。因此,一般来说,我们称部门为“业务”
如果我们说除法是对数相合的,而B是小的,那么我们就是O(loga)^2我们现在考虑整个算法怎么样?时间复杂度是多少?Thx a lot
O(l*(m+loga logb))
@WILLIAM,这是最后一句话。顺便说一句,别忘了接受你得到的答案之一!;)