Algorithm Sqrt(n)时间复杂度

Algorithm Sqrt(n)时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,我不熟悉时间复杂性和渐近符号。我在看这段视频:为了计算下面显示的一段代码的时间复杂度 代码得出以下代码的时间复杂度为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; Sys

我不熟悉时间复杂性和渐近符号。我在看这段视频:为了计算下面显示的一段代码的时间复杂度

代码得出以下代码的时间复杂度为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);
}
p=0;

对于(int i=0;pBig O不用于计算预期执行的指令数。对于给定的n,计算n的平方根不会给出指令执行的确切次数。Big O描述了当输入大小变得非常大时函数发生的情况10甚至100不适用于大O

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


如果您观看视频,讲师将简化k(k+1)通过取前导项,将/2项转换为k^2项,因为k项与k^2项相比变得无关紧要,当k非常大时

对不起。我已经修复了代码。我不明白你在问什么。你的问题到底是什么?大O描述了渐近行为(直到乘以常数)对于n的大值,你无法从中推断出n=10的时间。好吧,假设如果我有n=100,我将有根(100)System.out.print语句是错误的?不。如果100足够大,可以显示渐近行为,那么对于某些常数c,你将得到c*sqrt(100)打印。谢谢你的解释