0% found this document useful (0 votes)
39 views19 pages

Review Questions Complexity Analysis

The document discusses complexity analysis of nested loops. It provides basic rules for determining time complexity such as multiplying nested loops and dropping constants. It then provides 9 examples of nested loops and calculates the time complexity of each example by applying the basic rules. The time complexities range from O(n) to O(n^2) to O(nlogn).

Uploaded by

Ankit Rajput
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views19 pages

Review Questions Complexity Analysis

The document discusses complexity analysis of nested loops. It provides basic rules for determining time complexity such as multiplying nested loops and dropping constants. It then provides 9 examples of nested loops and calculates the time complexity of each example by applying the basic rules. The time complexities range from O(n) to O(n^2) to O(nlogn).

Uploaded by

Ankit Rajput
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 19

Complexity Analysis

Basic rules
1. Nested loops are multiplied together.
2. Sequential loops are added.
3. Only the largest term is kept, all others are
dropped.
4. Constants are dropped.
5. Conditional checks are constant (i.e. 1).
Example 1
• for(int i = 0; i < n; i++) {
• cout << i << endl;
• }
• Ans: O(n)
Example 2
• for(int i = 0; i < n; i++) {
• for(int j = 0; j < n; j++){
• //do swap stuff, constant time
• }
• }
• Ans O(n^2)
Example 3
• for(int i = 0; i < n; i++) {
• for(int j = 0; j < i; j++){
• //do swap stuff, constant time
• }
• }
• Ans: Outer loop is still 'n'. The inner loop now
executes 'i' times, the end being (n-1). We
now have (n(n-1)). This is still in the bound of
O(n^2)
Example 4
• for(int i = 0; i < 2*n; i++) {
• cout << i << endl;
• }
• At first you might say that the upper bound is
O(2n); however, we drop constants so it
becomes O(n)
Example 5
• for(int i = 0; i < n; i++) {
• cout << i << endl;
• }
•  
• for(int i = 0; i < n; i++) {
• for(int j = 0; j < i; j++){
• //do constant time stuff
• }
• }
• Ans : In this case we add each loop's Big O, in
this case n+n^2. O(n^2+n) is not an acceptable
answer since we must drop the lowest term.
The upper bound is O(n^2). Why? Because it
has the largest growth rate
Example 6
• for(int i = 0; i < n; i++) {
• for(int j = 0; j < 2; j++){
• //do stuff
• }
• }
• Ans: Outer loop is 'n', inner loop is 2, this we
have 2n, dropped constant gives up O(n)
Example 7
• for(int i = 1; i < n; i *= 2) {
• cout << i << endl;
• }
• There are n iterations, however, instead of
simply incrementing, 'i' is increased by 2*itself
each run. Thus the loop is log(n).
Example 8
• for(int i = 0; i < n; i++) {
• for(int j = 1; j < n; j *= 2){
• //do constant time stuff
• }
• }
• Ans: n*log(n)
Example 9
• for(int i = 0; i < n; i *= 2) {
• cout << i << endl;
• }

You might also like