Java中math.sqrt实现的时间复杂度是多少? Java在某些技术中实现了时间复杂性,我试图确定时间复杂度。
答案 0 :(得分:3)
在大多数情况下,Java会尝试使用"智能电源"算法,导致时间复杂度为O(log n)。 Smart power Algorithm
此外,似乎在不同的情况下,你可能会遇到不同的复杂性; Why is multiplied many times faster than taking the square root?
答案 1 :(得分:0)
看起来它是通过委托给作为本机方法的sqrt方法StrictMath来实现的。
因此,答案似乎是特定于实现的。
严格来说是O(1)。理论上(但显然不是练习),我们可以遍历所有双打并找到最长时间。
此外,Math.sqrt(n)的时间复杂度不直接取决于n,而是取决于表示n所需的空间量,对于双精度应该是常数。