// O(1) since it does not vary with n
void foo1(int n) {
// `c` is global constant
for (int i ; i <= c; i++) {
cout << "hello\n";
}
}
// O(n), linear w.r.t. n, prints hello n/c times
void foo2(int n) {
// `c` is global constant
for (int i = 1; i <= n; i += c) {
cout << "hello\n";
}
}
// O(n^2)
void foo3(int n) {
// `c` is global constant
for (int i = 1; i <= n; i += c) {
for (int j = 1; j <= n; i += c) {
cout << "hello\n";
}
}
}
// O(n^2)
void foo2(int n) {
// `c` is quadratically related to n
for (int i = 1; i <= c; i++) {
cout << "hello\n";
}
}
For nested loop that initializes its counter using the outer loop’s counter like the one below, the inner loop still has , since half of inner loop iterations deals with at least elements.
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
// O(1) work here
}
}