我正在阅读 Sedgewick 和 Wayne 的“算法 - 第四版”一书,我必须承认“算法分析”一章中的某些部分让我感到困惑!这可能是由于我缺乏数学知识造成的......无论如何!
在书中的某处,有一个程序示例,其中内部循环被称为恰好执行 N(N-1)(N-2)/6 次。这里是:
public static int count(int[] a) {
int count = 0;
for (int i = 0; i < a.length; i++) {
for (int j = i + 1; i < a.length; j++) {
for (int k = j + 1; k < a.length; k++) {
if (a[i] + a[j] + a[k] == 0) {
count++;
}
}
}
}
return count;
}
我熟悉大 O 表示法,但在计算循环中操作的确切数量时,我迷路了。我理解 N(N-1)(N-2) 部分,但为什么我们必须除以 6?其背后的逻辑是什么?
任何帮助将不胜感激!