Java 嵌套循环递归的大O复杂性
准备考试我在一次旧考试中遇到了这个问题: 此函数的最坏情况/big-O复杂性是什么:Java 嵌套循环递归的大O复杂性,java,big-o,complexity-theory,Java,Big O,Complexity Theory,准备考试我在一次旧考试中遇到了这个问题: 此函数的最坏情况/big-O复杂性是什么: float foo(float[] A) { int n = A.length; if (n == 1) return A[0]; float[] A1 = new float[n/2]; float[] A2 = new float[n/2]; float[] A3 = new float[n/2]; float[] A4 = new float[n/2];
float foo(float[] A) {
int n = A.length;
if (n == 1) return A[0];
float[] A1 = new float[n/2];
float[] A2 = new float[n/2];
float[] A3 = new float[n/2];
float[] A4 = new float[n/2];
for (i = 0; i <= (n/2)-1; i++) {
for (j = 0; j <= (n/2)-1; j++) {
A1[i] = A[i];
A2[i] = A[i+j];
A3[i] = A[n/2+j];
A4[i] = A[j];
}
}
return foo(A1)
+ foo(A2)
+ foo(A3)
+ foo(A4);
}
float foo(float[]A){
int n=A.长度;
如果(n==1)返回[0];
浮动[]A1=新浮动[n/2];
浮动[]A2=新浮动[n/2];
浮动[]A3=新浮动[n/2];
浮动[]A4=新浮动[n/2];
对于(i=0;i好的,我终于明白了
每次递归时,我们执行的函数调用是上次的4倍,因此,如果我们将递归级别定义为m
,则每个级别的函数调用数为
每次递归时,我们也会将数组大小减半,因此每个函数调用的工作量是
在每个递归级别,总共完成的工作量为:
事实上,4^m
与(2^m)^2
相同:
因此,工作量可以写为n^2
:
有logn
递归级别
因此总工作量是O(n^2*logn)
,这是因为有4个递归调用。
如果只有两个递归调用,那么每个级别的工作量将是
我们不能很好地减少(但如果我的数学正确的话,结果是在O(n^2)
。好的,我终于找到了答案
每次递归时,我们执行的函数调用是上次的4倍,因此,如果我们将递归级别定义为m
,则每个级别的函数调用数为
每次递归时,我们也会将数组大小减半,因此每个函数调用的工作量是
在每个递归级别,总共完成的工作量为:
事实上,4^m
与(2^m)^2
相同:
因此,工作量可以写为n^2
:
有logn
递归级别
因此总工作量是O(n^2*logn)
,这是因为有4个递归调用。
如果只有两个递归调用,那么每个级别的工作量将是
我们不能很好地减少(但如果我的数学正确的话,结果是在O(n^2)
。好的,我终于找到了答案
每次递归时,我们执行的函数调用是上次的4倍,因此,如果我们将递归级别定义为m
,则每个级别的函数调用数为
每次递归时,我们也会将数组大小减半,因此每个函数调用的工作量是
在每个递归级别,总共完成的工作量为:
事实上,4^m
与(2^m)^2
相同:
因此,工作量可以写为n^2
:
有logn
递归级别
因此总工作量是O(n^2*logn)
,这是因为有4个递归调用。
如果只有两个递归调用,那么每个级别的工作量将是
我们不能很好地减少(但如果我的数学正确的话,结果是在O(n^2)
。好的,我终于找到了答案
每次递归时,我们执行的函数调用是上次的4倍,因此,如果我们将递归级别定义为m
,则每个级别的函数调用数为
每次递归时,我们也会将数组大小减半,因此每个函数调用的工作量是
在每个递归级别,总共完成的工作量为:
事实上,4^m
与(2^m)^2
相同:
因此,工作量可以写为n^2
:
有logn
递归级别
因此总工作量是O(n^2*logn)
,这是因为有4个递归调用。
如果只有两个递归调用,那么每个级别的工作量将是
我们不能很好地减少它(但是如果我的数学是正确的,结果是在O(n^2)
。如果你解决这个递归关系,你就能够确定复杂性
T(n) = 4T(n/2) + O(n²)
与
如果你解决了这个递归关系,你就能确定它的复杂性
T(n) = 4T(n/2) + O(n²)
与
如果你解决了这个递归关系,你就能确定它的复杂性
T(n) = 4T(n/2) + O(n²)
与
如果你解决了这个递归关系,你就能确定它的复杂性
T(n) = 4T(n/2) + O(n²)
与
函数返回什么?它不返回任何东西。它只是一个理论试题的无意义函数。函数返回什么?它不返回任何东西。它只是一个理论试题的无意义函数。函数返回什么?它不返回任何东西。它只是一个理论试题的无意义函数这个函数返回什么?它什么都不返回。它只是一个理论试题的无意义函数。