\begin{algorithm} \caption{Extract Minimum Element of a Young Matrix} \begin{algorithmic} \PROCEDURE{YoungExtractMin}{$Y$} \IF{$Y.\text{row-num} < 1$ \OR $Y.\text{col-num} < 1$} \STATE \textbf{error} "young matrix underflow" \ENDIF \STATE $min = Y[0, 0]$ \STATE $Y[0, 0] = \infty$ \STATE \CALL{MatrixYounify}{$Y, 0, 0$} \RETURN $min$ \ENDPROCEDURE \STATE \STATE \COMMENT{Younify $Y[i..m, j..n]$ when $Y[i + 1..m, j..n]$ and $Y[i..m, j+1..n]$ is young} \PROCEDURE{MatrixYounify}{$Y, i, j$} \STATE $smallest = (i, j)$ \IF{$i + 1 < Y.\text{row-num}$ \AND $Y[i + 1, j] < Y[smallest]$} \STATE $smallest = (i + 1, j)$ \ENDIF \IF{$j + 1 < Y.\text{col-num}$ \AND $Y[i, j + 1] < Y[smallest]$} \STATE $smallest = (i, j + 1)$ \ENDIF \IF{$smallest \ne (i, j)$} \STATE exchange $Y[i, j]$ with $Y[smallest]$ \STATE \CALL{MatrixYounify}{$Y, smallest$} \ENDIF \ENDPROCEDURE \end{algorithmic} \end{algorithm}