Question: Identify the big-O time complexity of each of the following functions: void f1(int n) { } for (int i=0; i<(3*n+n); ++i) { cout << i << endl; } } for (int i=0; i< (10*n); ++i) { cout << i << endl; void f2 (int n) { if(n==0) { return; } f2 (n-1); f2 (n-3); void f3 (int n) { for (int i=0; i

icon
Related questions
Question
100%

Identify the big-O time for these void functions

### Question:
Identify the big-O time complexity of each of the following functions:

#### Function f1:
```cpp
void f1(int n) {
    for(int i=0; i<(3*n+n); ++i) {
        cout << i << endl;
    }
    for(int i=0; i<(10*n); ++i) {
        cout << i << endl;
    }
}
```

- **Explanation:** 
  - The first loop runs for `4n` times (`3n + n`), and the second loop runs for `10n` times.
  - Overall, this results in a time complexity of **O(n)**.

#### Function f2:
```cpp
void f2(int n) {
    if(n==0) { return; }
    f2(n-1);
    f2(n-3);
}
```

- **Explanation:**
  - This function makes two recursive calls: one reducing `n` by 1 and the other by 3.
  - The recurrence relation is **T(n) = T(n-1) + T(n-3) + O(1)**.
  - The time complexity is approximately **O(2^n/3)**, which simplifies to **O(2^(n/3))** or approximately **O(2^n)** in complexity analysis terms.

#### Function f3:
```cpp
void f3(int n) {
    for(int i=0; i<n; ++i) {
        for(int j=0; j<n; ++j) {
            for(int k=0; k<n; ++k) {
                cout << i << endl;
            }
        }
    }
}
```

- **Explanation:**
  - This function contains three nested loops, each running `n` times.
  - Therefore, the total number of operations is **n * n * n = n^3**.
  - The time complexity is **O(n^3)**.
Transcribed Image Text:### Question: Identify the big-O time complexity of each of the following functions: #### Function f1: ```cpp void f1(int n) { for(int i=0; i<(3*n+n); ++i) { cout << i << endl; } for(int i=0; i<(10*n); ++i) { cout << i << endl; } } ``` - **Explanation:** - The first loop runs for `4n` times (`3n + n`), and the second loop runs for `10n` times. - Overall, this results in a time complexity of **O(n)**. #### Function f2: ```cpp void f2(int n) { if(n==0) { return; } f2(n-1); f2(n-3); } ``` - **Explanation:** - This function makes two recursive calls: one reducing `n` by 1 and the other by 3. - The recurrence relation is **T(n) = T(n-1) + T(n-3) + O(1)**. - The time complexity is approximately **O(2^n/3)**, which simplifies to **O(2^(n/3))** or approximately **O(2^n)** in complexity analysis terms. #### Function f3: ```cpp void f3(int n) { for(int i=0; i<n; ++i) { for(int j=0; j<n; ++j) { for(int k=0; k<n; ++k) { cout << i << endl; } } } } ``` - **Explanation:** - This function contains three nested loops, each running `n` times. - Therefore, the total number of operations is **n * n * n = n^3**. - The time complexity is **O(n^3)**.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 5 steps

Blurred answer