RecurrenceWarmup Finding the Median Without Sorting Generalize to finding the k’th largest element of a list: Find(L, k) Median ::= Find(L, |L|/2) Find(L, k) Let |L| = n Assume distinct elements Divide L into blocks of and find the medians (third of five elements) of the blocks: O(n) time Recursively find the median of the medians, M M < half the medians, and each median < of the elements of its block So those medians are < 2/10 of the elements of L So M < 3/10 of the elements of L Likewise M > 3/10 the elements of L Find(L, k) Use M to split L into two sublists: elements < M and elements > M On the basis of the size of these lists, figure out which part the k’th element of L belongs to Recursively find the corresponding element within that sublist, which is of size at most 7n/10 Analysis • • • T(1) = T(n) ≤ T(n/5) + T(7n/10) (Time to find median of medians plus time to select from elements that have not been excluded) • Linear solution! Because n + 9n + n + … < 10n So T(n) = O(n) FINIS