Sqrt(n)时间复杂度

时间:2019-05-30 18:44:40

标签: algorithm time-complexity

我对时间复杂性和渐近表示法是陌生的。我正在看这段视频:https://www.youtube.com/watch?v=9TlHvipP5yA来计算下面所示代码的时间复杂度

代码得出的结论是,以下代码的时间复杂度为O(Sqrt(n));

当我提供不同的n值时,我期望的是Sqrt(n)#个输出,但这不能验证O(Sqrt(n))分析。有人可以解释为什么会这样吗?

例如,如果我有n = 10,我期望Sqrt(10)输出约为3个输出,如果四舍五入,则为4个。这不合逻辑吗?

先谢谢了。

p = 0;
for( int i = 0; p <= n; i++){
  p = p + i;
  System.out.println(p);
}

1 个答案:

答案 0 :(得分:1)

Big O不用于计算您期望执行的指令数。对于给定的n,计算n的平方根将无法为您提供指令执行的确切次数。大O描述输入大小变得很大后函数会发生什么。当n为10甚至100时,对函数的分析不适用于Big O。

当我们说一个函数的时间复杂度为O(sqrt(n))时,我们的意思是该函数属于一类函数,其中所需时间与n值的平方根成正比,仅适用于非常大的n 值。

如果您观看视频,则讲师会采用前导项将k(k + 1)/ 2项简化为k ^ 2,因为与k ^ 2项相比,k项变得无关紧要, k非常大

相关问题