私は Sedgewick と Wayne による「アルゴリズム - 第 4 版」という本を読んでいますが、「アルゴリズムの分析」の章のいくつかの部分が私を混乱させていることを認めなければなりません! これはおそらく私の数学的な知識の不足が原因です... とにかく!
本のどこかに、内側のループが正確に 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 で割る必要があるのでしょうか? その背後にあるロジックは何ですか?
どんな助けでも大歓迎です!