Zagnieżdżone pętle w modelu matematycznym do zliczania liczby operacji

Czytam książkę „Algorithms - Fourth edition” autorstwa Sedgewicka i Wayne'a i muszę przyznać, że niektóre części rozdziału „Analiza algorytmów” wprowadzają mnie w błąd! Jest to prawdopodobnie spowodowane moim brakiem wiedzy matematycznej ... W każdym razie!

Gdzieś w książce znajduje się przykład programu, w którym mówi się, że pętla wewnętrzna jest wykonywana dokładnie N (N-1) (N-2) / 6 razy. Oto jest:

    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;
    }

Jestem zaznajomiony z notacją big O, ale jeśli chodzi o zliczanie dokładnej liczby operacji w pętlach, jestem zgubiony. Rozumiem część N (N-1) (N-2), ale dlaczego musimy podzielić ją przez 6? Jaka jest logika?

Każda pomoc byłaby bardzo mile widziana!

questionAnswers(4)

yourAnswerToTheQuestion