だから私は本のAlgorithms 4th editionからこのカウントアルゴリズムを持っています。これは、各ループの頻度を計算するアルゴリズムの分析の章で使用され、内部ループのifステートメントと最初の宣言からです。
それぞれの部分は、A、B、C、D、E の部分に分割されています。
E = X (depends on input)
D = (N^3)/6 - (N^2)/2 + N/3
C = (N^2)/2 - N/2
B = N
A = 1
このすべての周波数が部分和に由来することは知っていますが、各答えがどのように得られたのか理解できません。なぜ各周波数がそのようになっているのか説明していただければ幸いです.
public static int count(int[] a)
{
int N = a.length; // Part A
int cnt = 0; // Part A
for(int i = 0; i < N; i++) //Part A
for(int j = i+1; j < N; j++) // Part B
for(int k = j+1; k < N; k++) // Part C
if(a[i] + a[j] + a[k] == 0 // Part D
cnt++; // Part E
return cnt;
}