Java 跟踪算法有多复杂?
以下代码的复杂性是什么Java 跟踪算法有多复杂?,java,algorithm,time-complexity,big-o,Java,Algorithm,Time Complexity,Big O,以下代码的复杂性是什么 public static int foo(int[] a){ int[] b = new int[a.length]; for(int i = 0; i < a.length; ++i){ for(int j = 0; j < b.length / 100; ++j ){ b[i] += a[i] + a[j]; } }
public static int foo(int[] a){
int[] b = new int[a.length];
for(int i = 0; i < a.length; ++i){
for(int j = 0; j < b.length / 100; ++j ){
b[i] += a[i] + a[j];
}
}
int result = 0;
for(int i = 0; i < b.length; i++ ){
result += b[i];
}
return result;
}
publicstaticintfoo(int[]a){
int[]b=新的int[a.长度];
对于(int i=0;i
我想会是:
O(1) + O(n)*O(n/100) + O(n) = O(1) + O(n^2/100) + O(n)
所以总体复杂性是~O(n^2)
公共静态intfoo(int[]a){
//O(1)
int[]b=新的int[a.长度];
//O(a.长度x a.长度)
对于(int i=0;i
}
让我们假设a
大小n
,总数:O(n^2)
+O(n)
=O(n^2)
你为什么不告诉我们你认为它是什么(为什么),然后如果你错了,我们可以纠正你?O(a.length x b.length)+O(b.length)
,通常你可以说它是O(n^2)
如果a
大小为n
public static int foo(int[] a){
// O(1)
int[] b = new int[a.length];
// O(a.length x a .length)
for(int i = 0; i < a.length; ++i){
// O(a.length)
for(int j = 0; j < b.length / 100; ++j ){
b[i] += a[i] + a[j];
}
}
// O(1)
int result = 0;
// O(a.length)
for(int i = 0; i < b.length; i++ ){
result += b[i];
}
return result;