[英]Finding big-O complexity. of three algorithms
我试图找到以下算法的时间复杂度。
从我可以看到,alg1中的前两个循环是n ^ 2,但是我不确定alg2中的循环在什么时间运行。
public class algo {
public static int alg1(int[] A, int n) {
int l = 0;
for (int i = 0; i <= n-1; i++) {
for (int j = i+1; j <= n-1 ; j++) {
if(alg2(A,i,j) && j-i > l) {
l = j-i+1;
}
}
}
return l;
}
private static boolean alg2(int[] A,int i, int j) {
if(i==j) {
return true;
}
for (int k = i; k <= j-1; k++) {
if(A[k] != A[k+1]) {
return false;
}
}
return true;
}
}
您是正确的,第一个Alg1的时间复杂度为O(n ^ 2)。 第二个函数Alg2具有O(n)的时间复杂度,因为算法的性能将与其输入大小成线性比例增长。 您只有一个for循环,并且没有在该代码的任何地方应用D&C技术。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.