Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (743.28 KB, 6 trang )
Recurrence Warmup
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 5 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 < 2 of the 5 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.