Question

for (int i=0; i<V-1; i++) {
    for (int j=i+1; j<V; j++) {
        if (matrix[i][j]) {
            from[nextedge]=i;
            to[nextedge]=j;
            nextedge++;
        }
    }
}

I am trying to find out the o notation runtime for the if statement and inner for loop but am struggling with how to solve this

Was it helpful?

Solution 2

This entire code is O(V^2) because the sum of x from x=1 to x=V is (1/2)V(V+1). The inner loop is O(V) because the maximum number of iterations it must complete is V-1 The if statement is O(1): there is a constant maximum of steps it completes.

OTHER TIPS

You have two nested for loops, each of which depends on the size of V. So your total complexity would be O(V2).

The loop for(int i = 0; i < V - 1; i++){} would be O(n) by itself.

You then run for (int j=i+1; j<V; j++) {} inside this loop. Each iteration of i this loop runs one less time. This is V + V-1 + V-2...2+1. This is V/2. This results in V * V/2 or V * 0.5 V. Since 0.5 is a constant it is not used, resulting in V * V or O(V2)

http://pages.cs.wisc.edu/~vernon/cs367/notes/3.COMPLEXITY.html#application See "Nested loops", item 4.

http://pages.cs.wisc.edu/~vernon/cs367/notes/3.COMPLEXITY.html

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top