Input: an array of $n$ elements and $i$, the number of the order statistic to return from the elements.
- Divide the $n$ elements into $lfloor n/5 rfloor$ groups of 5 elements each along with an optional group containing $nmod{5}$ elements (resulting in $lceil n/5 rceil$ groups.)
- Find the median of each of the groups by sorting.
- Recurse, using the $lceil n/5 rceil$ medians as the array and $lfloorlceil n/5 rceil/2rfloor$ as the order statistic, resulting in the median-of-medians.
- Partition the $n$ elements around the median-of-medians (using a quicksort-like $O(n)$ partitioning algorithm.
- Letting $k-1$ be the number of elements less than the median-of-medians, if $i = k$, return the median-of-medians. Otherwise recurse: if $i < k$ then recurse finding the $i$th order statistic of the $k-1$ elements less than the median-of-medians; if $i > k$, then recurse finding the $i-k$th order statistic of the $n-k$ elements greater than the median-of-medians.
Output: the $i$th order statistic of the $n$ numbers.
In the proof of the runtime, CLRS argue that the number of elements greater than the median-of-medians is at least: $$ 3 bigg(bigglceil frac{1}2 bigglceil{frac{n}5} biggrceil biggrceil – 2bigg) $$ The reasoning is that half of the medians are greater than the median-of-medians, and each of those medians’ groups has at least three elements greater than the median-of-medians (the median itself plus the two elements greater than the median.) That would result in $$ 3 bigg(bigglceil frac{1}2 bigglceil{frac{n}5} biggrceil biggrceilbigg) $$ for the lower bound on the number of elements greater than the median-of-medians. But we must account for two things: the group containing the median-of-medians (the median-of-medians is not greater than itself) and the group that contains the modulo leftovers. To account for the group containing the median-of-medians, we subtract 1, resulting in: $$ 3 bigg(bigglceil frac{1}2 bigglceil{frac{n}5} biggrceil biggrceilbigg) – 1 $$ and I think that for the modulo leftovers group, we should subtract 4, because the least number of elements in the group is 1. So that would give: $$ 3 bigg(bigglceil frac{1}2 bigglceil{frac{n}5} biggrceil biggrceilbigg) – 5 $$ which can be transformed into $$ 3 bigg(bigglceil frac{1}2 bigglceil{frac{n}5} biggrceil biggrceil – 2bigg) + 1 $$ Why does my analysis lead to a lower-bound 1 greater than that given in CLRS?
Asked By : Carl G
Answered By : Massimo Cafaro
Best Answer from StackOverflow
Question Source : http://cs.stackexchange.com/questions/19542 Ask a Question Download Related Notes/Documents