








Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
The Median Finding Algorithm, a linear time selection algorithm used to find the k-th smallest element in a set of unordered numbers. The algorithm uses a divide and conquer strategy and elimination to reduce running time. It is compared to a simple sorting algorithm like Heapsort and is shown to have a better running time.
What you will learn
Typology: Schemes and Mind Maps
1 / 14
This page cannot be seen from the preview
Don't miss anything!
th
th
Arrange the numbers in groups of five
Find median of N/5 groups
Median of each group
Find the sets L and R
Compare each n-1 elements with the median m and find two
sets L and R such that every element in L is smaller than M and
every element in R is greater than m.
m
3n/10<L<7n/10 3n/10<R<7n/
Description of the Algorithm step
If n is small, for example n<6, just sort and return the k the smallest
number.( Bound time- 7)
If n>5, then partition the numbers into groups of 5.(Bound time n/5)
Sort the numbers within each group. Select the middle elements (the
medians). (Bound time- 7n/5)
Call your "Selection" routine recursively to find the median of n/
medians and call it m. (Bound time-T
n/
)
Compare all n-1 elements with the median of medians m and
determine the sets L and R, where L contains all elements <m, and R
contains all elements >m. Clearly, the rank of m is r=|L|+1 (|L| is the
size or cardinality of L). (Bound time- n)
Recursive formula
T (n)=O (n) + T (n/5) +T (7n/10)
We will solve this equation in order to get the complexity.
We assume that T (n)< C*n
T (n) = a*n + T (n/5) + T (7n/10)
Cn >= T(n/5) +T(7n/10) + an
Cn >= Cn/5+ C7n/10 + a*n
C >= 9*C/10 +a
C/10 >= a
C >= 10*a
There is such a constant that exists….so T (n) = O (n)
Why group of 5 why not some other term??
If we divide elements into groups of 3 then we will have
T (n) = O (n) + T (n/3) + T (2n/3) so T (n) > O (n)…..
If we divide elements into groups of more than 5, the value of
constant 5 will be more, so grouping elements in to 5 is the
optimal situation.