Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算代码的BigO_Java_Algorithm_Asymptotic Complexity - Fatal编程技术网

Java 计算代码的BigO

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个变量。您将内存复杂性误认为时间复杂性。算法

我在网上读了一篇文章。根据我的理解,下面代码的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个变量。

您将内存复杂性误认为时间复杂性。算法的时间复杂性是
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
   }