Upcoming SlideShare
×

# Big-Oh Notation

4,902 views

Published on

3 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total views
4,902
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
215
0
Likes
3
Embeds 0
No embeds

No notes for slide

### Big-Oh Notation

1. 1. Big-Oh NotationAnd Some Others<br />J. Caleb Wherry<br />Austin Peay State University<br />Department of Computer Science<br />
2. 2. Outline<br />Asymptotic Growth Classifications<br />Equivalence Classes<br /> Theta, Little Oh, Little Omega Notations<br />Big Oh, Big Omega Notations<br />Combination of Big Oh Expressions<br />Typical Growth Rates<br />2<br />
3. 3. Asymptotic Growth Classifications<br />3<br />Asymptotic Growth: The rate at which a function grows. <br />“Growth rate” meaning the complexity of the function and /or the amount of resources it takes up to compute.<br />Given a differentiable function f(n), all other functions will fall into 1 of 3 asymptotic growth classifications:<br />Growing with the same rate.<br />Growing with a slower rate.<br />Growing with a faster rate. <br />
4. 4. Equivalence Classes<br />4<br />Asymptotic growth creates a partition over the set of all differentiable functions.<br />These are better known as equivalence classes.<br />Meaning: Given a function in one class, it is equivalent with respect to its asymptotic growth to every other function in that class. <br />Who Cares and Why? <br />
5. 5. L'Hôpital'sRule<br />5<br />Best Mathematical Tool for Helping With Growth Rates:<br />
6. 6. Theta – Same Growth Rate<br />6<br />We choose f(n) and g(n) as two differentiable functions and say that they have the same growth rate if :<br />Formally stated as: <br />
7. 7. Little Oh – Slower Growth Rate<br />7<br />We again choose f(n) and g(n) as two differentiable functions and say that f(n) grows slower than g(n) if:<br />Formally stated as: <br />
8. 8. Little Omega – Faster Growth Rate<br />8<br />We again choose f(n) and g(n) as two differentiable functions and say that f(n) grows faster than g(n) if:<br />Formally stated as: <br />
9. 9. Little Oh & Little Omega Together<br />9<br />Simple statement of the inverse relationship between Little Oh and Little Omega:<br />Examples<br />
10. 10. Another Example<br />10<br />Let us try this one:<br />Which is correct?<br />
11. 11. Big-Oh Notation<br />11<br />We again choose 2 differentiable functions f(n) and g(n) and say that f(n) grows with the same rate or slower than g(n) denoted by:<br />Logically broken down:<br />
12. 12. Big-Omega Notation<br />12<br />We again choose 2 differentiable functions f(n) and g(n) and say that f(n) grows with the same rate or faster than g(n) denoted by:<br />Logically broken down:<br />
13. 13. Big Oh & Big Omega Together<br />13<br />Simple statement of the inverse relationship between Big Oh and Big Omega:<br />
14. 14. Big Oh Combinations <br />14<br />Say we want to find the asymptotic growth of 2 functions combined in some fashion. These 2 rules are the basis for doing these combinations:<br />
15. 15. Other Rules<br />15<br />Rule 1:<br />Rule 2:<br />
16. 16. Growth Rates<br />16<br /> C Constant, denoted O(1)<br />logN Logarithmic<br /> logN2 Log-squared<br /> N Linear <br />NlogNLinearithmic<br /> N2 Quadratic<br /> N3 Cubic<br /> 2N Exponential <br /> N! Factorial<br />
17. 17. Question 1<br />17<br />What is the running time of this code piece?<br />int sum = 0;<br />for (inti = 0; i < n; i++) {<br />sum += i;<br />}<br />
18. 18. Question 2<br />18<br />What is the running time of this code piece?<br />…<br />while (first <= last) {<br />int mid = (first + last) / 2;<br /> if (key > sortedArray[mid]) <br /> first = mid + 1; <br /> else if (key < sortedArray[mid]) <br /> last = mid - 1;<br /> else<br /> return mid;<br />}<br />…<br />
19. 19. Final Question<br />19<br />What is the running time of this function?<br />public String makeSentence(String[] words) {<br /> String sentence = new String();<br /> for (String w : words) sentence.append(w);<br /> return sentence;<br />};<br />