可以告诉下面的代码块的时间复杂性
private static void Multiply(int num1, int num2)
{
long p,b,h1,h2,l1,l2,z0,z1,z2,m1,m2;
p = num1.ToString().Length-2;
b=Convert.ToInt32(Math.Pow(10,Convert.ToDouble(p)));
l1=num1%b;
h1 = num1 - l1;
l2 = num2 % b;
h2 = num2 - l2;
m1=num1 / b;
m2=num2 / b;
z0 = l1*(m1+m2);
z1 = m1*(h2 + Math.Abs(l1 - l2));
z2=l1*l2;
Console.WriteLine("Result is :"+((z0 +z1)*b+z2));
Console.ReadLine();
}
答案 0 :(得分:1)
据我所知,最常见的时间复杂度表示法是Big-O,我将在这个答案中分享相同的内容。时间复杂度为O(1)
,假设Math.Pow
计算为O(1)
且.ToString()
方法为O(1)
。它是O(1)
,因为每个步骤只会执行一次。
在gerenal中,如果我们考虑.ToString().Length
时间复杂度,那么它将是O(length of num1)
,因为从int
转换为String
将需要O(length of num1)
或{ {1}}。但是,当我们处理O(number of digits)
时,我们可以说时间复杂度为int
,而O(1)
最多只有11位数,这是常数,我们可以说Client
。