我正在阅读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符号,但是当涉及到循环计数opreations的确切数目,我迷路了。我了解N(N-1)(N-2)部分,但为什么我们必须除以6?它背后的逻辑是什么?
任何帮助将不胜感激!
参见[*算法§1.4分析*](HTTP://algs4.cs .princeton.edu/14analysis /)和['ThreeSum'](http://algs4.cs.princeton.edu/14analysis/ThreeSum.java.html)。 – trashgod 2012-08-11 15:11:58