Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Big O Notation Homework--Code Fragment Algorithm Analysis? [closed]

Tags:

java

big-o

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

like image 976
101010110101 Avatar asked Oct 19 '08 18:10

101010110101


People also ask

What is Big O notation in algorithm analysis?

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".

What is Big O notation identifies the best algorithm to solve a problem?

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.


1 Answers

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.

like image 171
Kyle Cronin Avatar answered Sep 24 '22 23:09

Kyle Cronin