我最近开始使用普林斯顿课程中的算法,并观察到以下模式
上)
double max = a[0];
for (int i = 1; i < N; i++)
if (a[i] > max) max = a[i];
O(N^2)
for (int i = 0; i < N; i++)
for (int j = i+1; j < N; j++)
if (a[i] + a[j] == 0)
cnt++;
O(N^3)
for (int i = 0; i < N; i++)
for (int j = i+1; j < N; j++)
for (int k = j+1; k < N; k++)
if (a[i] + a[j] + a[k] == 0)
cnt++;
这里的常见模式是随着循环中嵌套的增长,指数也会增加。假设如果我有 20 个 for 循环,我的复杂性将是 0(N^20) 是否安全?
PS:请注意,20 只是我选择的一个随机数,是的,如果您在代码中嵌套 20 个 for 循环,那么您显然有问题。