Download presentation
Presentation is loading. Please wait.
Published byBasil Bell Modified over 9 years ago
1
Question of the Day Move one matchstick to produce a square
2
Question of the Day Move one matchstick to produce a square
4
“Anything that can go wrong…” Big-Oh will calculate algorithm’s complexity Worst-case Worst-case analysis of algorithm performance Usually reasonably correlated with execution time Not always right to consider only worst-case May be situation where worst-case is very rare Solve for other cases similarly, but almost never done
5
Algorithmic Analysis
6
Primitive Statements O(1) Basis of programming, take constant time: O(1) Fastest possible big-Oh notation Time to run sequence of primitive statements, too But only if the input does not affect sequence Ignore constant multiplier 11 O(5) = O(5 * 1 ) = O( 1 )
7
Simple Loops for (int i = 0; i < n.length; i++){} -or- while (i < n) { i++; } Each loop executed n times Primitive statements only within body of loop O(1) Big –oh complexity of single loop iteration: O(1) O(n) Either loop runs O(n) iterations O(n)O(1)O(n) So loop has O(n) * O(1) = O(n) complexity total
8
More Complicated Loops for (int i = 0; i < n; i += 2) { } i 0, 2, 4, 6,..., n In above example, loop executes n / 2 iterations O(1) Iterations takes O(1) time, so total complexity: O( n )O(1) = O( n / 2 ) * O(1) O(n ) = O(n * ½ * 1) O(n) = O(n)
9
Really Complicated Loops for (int i = 1; i < n; i *= 2) { } i 1, 2, 4, 8,..., n In above code, loop executes log n iterations O(1) Iterations takes O(1) time, so total complexity: O(log n)O(1) = O(log n) * O(1) O(log n) = O(log n * 1) O(log n) = O(log n)
10
Nested Loops for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++) { } } Program would execute outer loop n times Inner loop run n times each iteration of outer loop O(n)O(n) O(n) iterations doing O(n) work each iteration O(n)O(n)O(n 2 ) So loop has O(n) * O(n) = O(n 2 ) complexity total Loops complexity multiplies when nested
11
Important to explain your answer Saying O(n) not enough to make it O(n) Methods using recursion especially hard to determine Derive difficult answer using simple process Justifying an Answer
12
Proving Your Answer
15
Important to explain your answer Saying O(n) not enough to make it O(n) Methods using recursion especially hard to determine Derive difficult answer using simple process May find that you can simplify big-Oh computation Find smaller or larger big-Oh than imagined Convincing others need not be very formal Explaining your answer in clear way is critical, however Justifying an Answer
16
Algorithm sneaky(int n) total = 0 for i = 0 to n do for j = 0 to n do total += i * j return total end for end for sneaky would take _____ time to execute O(n) iterations for each loop in the method It’s About Time
17
Algorithm sneaky(int n) total = 0 for i = 0 to n do for j = 0 to n do total += i * j return total end for end for sneaky would take O(1) time to execute O(n) iterations for each loop in the method But in first pass, method ends after return Always executes same number of operations It’s About Time
18
Algorithm power(int a, int b ≥ 0) if a == 0 && b == 0 then return -1 endif exp = 1 repeat b times exp *= a end repeat return exp power takes O(n) time in most cases Would only take O(1) if a & b are 0 ____ algorithm overall Big-Oh == Murphy’s Law
19
Algorithm power(int a, int b ≥ 0) if a == 0 && b == 0 then return -1 endif exp = 1 repeat b times exp *= a end repeat return exp power takes O(n) time in most cases Would only take O(1) if a & b are 0 big-Oh uses worst-case O(n) algorithm overall; big-Oh uses worst-case Big-Oh == Murphy’s Law
20
algorithm sum(int[][] a) total = 0 for i = 0 to a.length do for j = 0 to a[i].length do total += a[i][j] end for end for return total Despite nested loops, this runs in O(n) time Input is doubly-subscripted array for this method For this method n is number entries in array How Big Am I?
21
Handling Method Calls Method call is O(1) operation, … … but then also need to add time running method Big-Oh counts operations executed in total Remember: there is no such thing as free lunch Borrowing $5 to pay does not make your lunch free Similarly, need to include all operations executed In which method run DOES NOT MATTER
22
public static int sumOdds(int n) { int sum = 0; for (int i = 1; i <= n; i+=2) { sum+=i; } return sum; } public static void oddSeries(int n) { for (int i = 1; i < n; i++) { System.out.println(i + “ ” + sumOdds(n)); } } oddSeries calls sumOdds n times Each call does O(n) work, so takes O(n 2 ) total time! Methods Calling Methods
23
Your Turn Get into your groups and complete activity
24
How to Prepare for Midterm DODON'T Make cheat sheets for the test Review how parts of Java work Add post-its to important pages Memorize Drink case of 40s before test Use post-its as clothing
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.