Вложенные циклы в математическую модель для подсчета количества операций
Я читаю книгу «Алгоритмы - Четвертое издание». Седжвик и Уэйн, и я должен признать, что некоторые части в «Анализ алгоритмов» Глава меня смущает! Вероятно, это связано с моим отсутствием математических знаний ... В любом случае!
Где-то в книге приведен пример программы, в которой говорят, что внутренний цикл выполняется ровно 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? Какая логика стоит за этим?
Любая помощь будет принята с благодарностью!