Computability Sort homework. Formal definitions of time complexity. Big 0. Homework: Exercises. Searching. Shuffling.
Reprise Bubble sort –phases. Compare to neighbor and swap, if necessary. Only do next phase if there was a change. Merge –divide in half. Sort each half and then merge (merge step easy/quick)
Reports Insertion Heap Quicksort
My summaries Insertion –Going i = 2 to n, Put the i th element in its proper place. Simplest to write. Heap –put data into a heap (max heap, binary tree): parent greater than each of child nodes. Remove root (the biggest). Re-build tree and repeat Quicksort –choose pivot. Place items in sections: less than pivot and greater than or equal to pivot (variation: less than, equal, and greater than pivot). Repeat for each section. Depends on good choice of pivots Random. Median. Median of median. Use knowledge of data.
Cards Do sorts using cards.
Median There are ways to get median or estimate of median or median of medians that do not involve sorting the whole list. Extra credit opportunity!
O(f(n)) defines an upper bound. AKA called asymptotic notation. Given two functions, f and g:N R + then we say f(n) = O(g(n)) or F(n) is O(gn)) g(n) is an asymptotic bound for f(n) IF there exists positive integers c and n 0 such that f(n) = n 0 Informally, for high enough values n, and a coefficient, g(n) is upper bound to f(n).
Examples if f(n) = 4n n , then f(n) = O(n 3 ) Try n 0 = 1000, c=5. Don't need to pick the lowest values. Note: it also is true that f(n) = O(n 4 ). f(n) is …. Note: the equal sign is used but it is problematic…. But f(n) is not O(n 2 ). f(n) will be more than c*n 2, no matter what choice of c, at some point.
Exercises Find c and n 0 and determine g(n) for f(n) n n n+100 Generalize about polynomials
logarithms Recall: log b n is the value e such that b e =n Now log b n = log a n / log a b Proof: Show log b n * log a b = log a n. That is, a raised to expression on right is equal to n Call X = log b n, Y= log a b a Y*X = (a Y ) X by rules of exponents a Y is equal to b. b X is equal to n.
logarithms for O() notation Can use log (or ln) without mentioning base because the difference is just a coefficient and Big Oh notation allows/uses a coefficient.
Note f(n) = log(n) is O(n) n*log(n) is O(n 2 ) These are each strict bounds.
small o Given functions f and g, then f(n) = o(g(n)) if that for any c>0, a number n 0 exists such that f(n) =n 0. f(n) is asymptotically less. Another way to say this is lim (f(n)/g(n)) =0 as n infinity
Examples n log(n) = o(n 2 ) n 2 = o(n 3 ) sqrt(n) = o(n)
Time complexity let t:N R + (t a function from naturals to positive reals) Time complexity class TIME(t(n)) is all languages that are decidable by an O(t(n)) time Turing machine.
Homework Prove or disprove: 100*n = O(n) n 3 = O(n) 100*n = o(n) e n = o(3 n ) Develop a way to shuffle cards. (Can do research) Think of how to search a sorted for a particular value. Extra credit: research median algorithms to present to class.