代码的三个求和:计算原始操作的数量和大 O 符号
Three summations intertwined of a code: counting number of primitive operations & big O notation
我有以下代码:我需要获取大O符号并计算原始操作的数量。我知道循环通常对应于数学求和。有人可以帮助阐明如何解决以下代码的大 O,知道求和吗?
public static int hello(int[] first, int[] second) { // assume equal-length arrays
int n = first.length, count = 0;
for (int i = 0; i < n; i++) { // loop from 0 to n-1
int total = 0;
for (int j = 0; j < i; j++) {// loop from 0 to i
for (int k = 0; k <= j; k++) { // loop from 0 to j
total += first[k];
}
}
if (second[i] == total) {
count++;
}
}
return count;
}
所以这将是
正确的?你如何从这里继续?
当运行n=10的代码时,第一个循环运行n次即10次,第二个循环级别的语句运行45次,不知道是什么意思n 和在内部第三个循环级别具有恒定时间的语句运行 165 次。
有人可以帮助我了解此代码的求和类型以及它如何转换为 Big O 吗?非常感谢您的帮助。
前n个自然数之和和前n个自然数的平方和为 ,
你的求和是正确的,所以解决它
Sn =
Sn≤
Sn≤
Sn≤
Sn 转换为 for 循环总共执行的操作数。
时间复杂度因此给出,
O(Sn) ~ O(n3)
我有以下代码:我需要获取大O符号并计算原始操作的数量。我知道循环通常对应于数学求和。有人可以帮助阐明如何解决以下代码的大 O,知道求和吗?
public static int hello(int[] first, int[] second) { // assume equal-length arrays
int n = first.length, count = 0;
for (int i = 0; i < n; i++) { // loop from 0 to n-1
int total = 0;
for (int j = 0; j < i; j++) {// loop from 0 to i
for (int k = 0; k <= j; k++) { // loop from 0 to j
total += first[k];
}
}
if (second[i] == total) {
count++;
}
}
return count;
}
所以这将是
当运行n=10的代码时,第一个循环运行n次即10次,第二个循环级别的语句运行45次,不知道是什么意思n 和在内部第三个循环级别具有恒定时间的语句运行 165 次。
有人可以帮助我了解此代码的求和类型以及它如何转换为 Big O 吗?非常感谢您的帮助。
前n个自然数之和和前n个自然数的平方和为 ,
你的求和是正确的,所以解决它
Sn =
Sn≤
Sn≤
Sn≤
Sn 转换为 for 循环总共执行的操作数。
时间复杂度因此给出,
O(Sn) ~ O(n3)