Source: https://www.cs.cornell.edu/courses/cs2110/2009su/Lectures/examples/MedianFinding.pdf