Java 计算代码的BigO
我在网上读了一篇文章。根据我的理解,下面代码的BigO应该是O(n)。当循环运行n次时。但文章中的正确答案显示为O(1)。带着解释 代码恰好声明了4个变量:Java 计算代码的BigO,java,algorithm,asymptotic-complexity,Java,Algorithm,Asymptotic Complexity,我在网上读了一篇文章。根据我的理解,下面代码的BigO应该是O(n)。当循环运行n次时。但文章中的正确答案显示为O(1)。带着解释 代码恰好声明了4个变量:i、j、k和t。4=常数=O(1) 怎么做 根据我的理解,循环从O(n)开始运行n次 intfibonacci(intn) { int i=0,j=1,k,t; 对于(k=1;k您将内存复杂性误认为时间复杂性。算法的时间复杂性是O(n)。然而,内存,有时称为空间,算法的复杂性是O(1),因为分配了4个变量。您将内存复杂性误认为时间复杂性。算法
i
、j
、k
和t
。4=常数=O(1)
怎么做
根据我的理解,循环从O(n)开始运行n次
intfibonacci(intn)
{
int i=0,j=1,k,t;
对于(k=1;k您将内存复杂性误认为时间复杂性。算法的时间复杂性是O(n)
。然而,内存,有时称为空间,算法的复杂性是O(1)
,因为分配了4个变量。您将内存复杂性误认为时间复杂性。算法的时间复杂性是O(n)
。但是,内存(有时称为空间)算法的复杂性是O(1)
,因为分配了4个变量。形式上,大O符号描述了复杂性的程度
要计算大O符号,请执行以下操作:
确定算法复杂度的公式。例如,两个循环中嵌套了另一个循环,然后是另外三个未嵌套的循环:2N²+3N
除去除最高项2N²以外的所有项
删除所有常数:N²
换句话说,两个循环中有一个嵌套在内部,那么另外三个未嵌套的循环是O(N²)
当然,这是假设循环中包含的是简单的指令。如果循环中包含例如sort(),则必须将循环的复杂性乘以底层语言/库使用的sort()实现的复杂性
根据它的数学逻辑,程序的大O符号是O(N),而不是O(1)。
在这种情况下,要么文章是错误的,要么你对它所说的内容的理解是不正确和不完整的,只有部分文本放在这里。形式上,大O符号描述了复杂性的程度
要计算大O符号,请执行以下操作:
确定算法复杂度的公式。例如,两个循环中嵌套了另一个循环,然后是另外三个未嵌套的循环:2N²+3N
除去除最高项2N²以外的所有项
删除所有常数:N²
换句话说,两个循环中有一个嵌套在内部,那么另外三个未嵌套的循环是O(N²)
当然,这是假设循环中包含的是简单的指令。如果循环中包含例如sort(),则必须将循环的复杂性乘以底层语言/库使用的sort()实现的复杂性
根据它的数学逻辑,程序的大O符号是O(N),而不是O(1)。
在这种情况下,要么文章是错误的,要么你对它所说的内容的理解是不正确和不完整的,只有部分文本放在这里。如果你传递一个常量值,它的时间复杂度为O(1)
//这里c是一个常量
对于(inti=1;i如果传递一个常量值n,它的时间复杂度为O(1)
//这里c是一个常量
对于(int i=1;i…这段代码在恒定时间内运行是不可行的。变量声明时间复杂度是恒定的。但是,代码中的后续循环肯定不是。可能这篇文章缺少了一点?截图后编辑:看起来像是一个测试,而不是一篇文章,看起来是错误的。请链接到其中一篇文章。…这段代码在恒定时间内运行是不可行的。变量声明时间复杂度是恒定的。但是,代码中的后续循环肯定不是。可能这篇文章缺少了一点?在截图后编辑:看起来像是一个测试而不是一篇文章,而且看起来是错误的。请链接到其中一篇文章您错过了以下事实:question要求内存复杂度。但是,您稍后添加的屏幕截图显示内存复杂度。因为您将内存值分配给恒定数量的变量,所以内存复杂度为O(1)。您之前的问题是关于时间复杂度的。我希望此评论以及之前的答案能够有所帮助。您忽略了问题是关于内存复杂度的事实。但是,您后来添加的屏幕截图显示了内存复杂度。因为您将内存值分配给常量变量,所以内存复杂度为O(1)。您之前的问题是关于时间复杂度的。我希望此评论以及之前的答案能够有所帮助。循环由n
约束。循环由n
约束。
int fibonacci(int n)
{
int i = 0, j = 1, k, t;
for (k = 1; k <= n; ++k)
{
t = i + j;
i = j;
j = t;
}
return j;
}
// Here c is a constant
for (int i = 1; i <= c; i++) {
// some O(1) expressions
}
// Here c is a positive integer constant
for (int i = 1; i <= n; i += c) {
// some O(1) expressions
}