160 likes | 212 Views
Learn formal definitions of time complexity like Big O notation and master sorting algorithms such as Bubble Sort, Merge, Insertion, Heap, and Quicksort. Dive into practical examples and exercises to understand concepts better. Additional topics include searching, shuffling, and median algorithms. A must for those aiming to enhance their computational skills!
E N D
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 ith 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 n0 such that f(n) < c*g(n) for n>= n0 Informally, for high enough values n, and a coefficient, g(n) is upper bound to f(n).
Examples • if f(n) = 4n3+100n2+1000, then f(n) = O(n3) Try n0 = 1000, c=5. Don't need to pick the lowest values. Note: it also is true that f(n) = O(n4). f(n) is …. Note: the equal sign is used but it is problematic…. But f(n) is not O(n2). f(n) will be more than c*n2, no matter what choice of c, at some point.
Exercises Find c and n0 and determine g(n) for f(n) • n4+ 1000000 • 10n3+100n+100 Generalize about polynomials
logarithms Recall: logbn is the value e such that be=n Now • logbn = logan / logab Proof: Show logbn * logab = logan. That is, a raised to expression on right is equal to n Call X = logbn, Y= logab aY*X = (aY)X by rules of exponentsaY is equal to b. bX 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(n2) 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 n0 exists such that f(n) <c*g(n) for n>=n0. 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(n2) • n2 = o(n3) • 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) n3 = O(n) 100*n = o(n) en = o(3n) • 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.