以下算法在 bigO 中的运行时间是多少?
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
for(int k=j; k<=n;k++){
for(int l=k; l<=n;l++){
...
}
}
}
}
以下算法在 bigO 中的运行时间是多少?
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
for(int k=j; k<=n;k++){
for(int l=k; l<=n;l++){
...
}
}
}
}
这个算法似乎是n^4。当然,从理论角度来看(没有任何编译器考虑)。
N^4。小数部分不算。
这种依赖循环集合的公式可以推断如下:
其中c(常数)是最内层循环内的操作数,n是元素数,r是嵌套循环数。
在问题的情况下:
另一种有效但乏味的方法是使用 Sigma 表示法:
O(N^4) 是成本。
每个嵌套都是 N^ 所以本质上是 N * N * N * N = N^4
CS610,算法开发,新泽西理工学院。我的研究生课程实际上派上用场了。
我的答案是 O(N^4)……因为有四个“for 循环”……而且很容易判断这个算法的运行时间……谢谢!