If I understand correctly (from reading Wikipedia), median-of-medians pivot selection makes quickselect $O(n)$ because the pivot is guaranteed to be in between the 30th and 70th percentiles and so at least 30% of elements will be removed in each selection pass.
But I have tried to prove this percentage inductively but failed. In fact, I have found what I thought is a counterexample (where $\vec{v} \times n$ repeats $\vec{v}$'s elements $n$ times and $+$ is concatenation, as in Python lists):
\begin{align} \begin{bmatrix} 1 & 2 & 3 & \infty &\infty \end{bmatrix} \times 3 + \begin{bmatrix}\infty &\infty&\infty &\infty&\infty \end{bmatrix}\times2 \\+ \begin{bmatrix} 4 & 5 & 6 & \infty &\infty \end{bmatrix} \times 3 + \begin{bmatrix}\infty &\infty&\infty &\infty&\infty \end{bmatrix}\times2\\ + \begin{bmatrix} 7 & 8 & 9 & \infty &\infty \end{bmatrix} \times 3 + \begin{bmatrix}\infty &\infty&\infty &\infty&\infty \end{bmatrix}\times2\\ + \begin{bmatrix} 10 & 11 & 12 & \infty &\infty \end{bmatrix} \times 3 + \begin{bmatrix}\infty &\infty&\infty &\infty&\infty \end{bmatrix}\times2\\ + \begin{bmatrix} 13 & 14 & 15 & \infty &\infty \end{bmatrix} \times 3 + \begin{bmatrix}\infty &\infty&\infty &\infty&\infty \end{bmatrix}\times2 \end{align}
In place of $\infty$ we can just put any large number.
After the first step, we have: \begin{bmatrix}3&3&3&\infty&\infty&6&\cdots&9&\cdots&12&\cdots &15&15&15&\infty&\infty\end{bmatrix} Second step: \begin{bmatrix}3&6&9&12&15\end{bmatrix} Finally we get the median-of-medians $9$. However in the initial array only $3\cdot 3\times 3 = 27$ of $5 \cdot (2+3) \cdot 5 = 125$ elements ($21.6\%$) are $\le 9$. Which seems to violate the 30% bound.
I doubt the algorithm is incorrect so what am I getting wrong? A proof would be much appreciated.