For homework, I was given the following 8 code fragments to analyze and give a Big-Oh notation for the running time. Can anybody please tell me if I'm on the right track?
//Fragment 1 for(int i = 0; i < n; i++) sum++;
I'm thinking O(N) for fragment 1
//Fragment 2 for(int i = 0; i < n; i+=2) sum++;
O(N) for fragment 2 as well
//Fragment 3 for(int i = 0; i < n; i++) for( int j = 0; j < n; j++) sum++;
O(N^2) for fragment 3
//Fragment 4 for(int i = 0; i < n; i+=2) sum++; for(int j = 0; j < n; j++) sum++;
O(N) for fragment 4
//Fragment 5 for(int i = 0; i < n; i++) for( int j = 0; j < n * n; j++) sum++;
O(N^2) for fragment 5 but the n * n is throwing me off a bit so I'm not quite sure
//Fragment 6 for(int i = 0; i < n; i++) for( int j = 0; j < i; j++) sum++;
O(N^2) for fragment 6 as well
//Fragment 7 for(int i = 0; i < n; i++) for( int j = 0; j < n * n; j++) for(int k = 0; k < j; k++) sum++;
O(N^3) for fragment 7 but once again the n * n is throwing me off
//Fragment 8 for(int i = 1; i < n; i = i * 2) sum++;
O(N) for fragment 8
Big-O notation signifies the relationship between the input to the algorithm and the steps required to execute the algorithm. It is denoted by a big "O" followed by an opening and closing parenthesis. Inside the parenthesis, the relationship between the input and the steps taken by the algorithm is presented using "n".
let problem A of size is n. Big O says time taken by best algorithm that solve every case(best, avarage, worst) of problem A completely. in general Big O is "The Best algorithm of worst case input". it also determines the max size of problem that can be solved in given amount of time.
I think fragment 5 is O(n^3), and similarly fragment 7 is O(n^5)*. It also looks like O(log(n)) for fragment 8.
For the n * n problems, you have to execute the body of the loop n * n times, so it would be O(n^2), then you compound that with the order of the other code. Fragment 8 actually doubles the counter instead of incrementing it, so the larger the problem, the less additional work you have to do, so it's O(log(n))
*edit: Fragment 7 is O(n^5), not O(n^4) as I previously thought. This is because both j and k go from 1 to n * n. Sorry I didn't catch this earlier.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With