\begin{algorithm}
        \caption{Partition Considering Equal Elements}
        \begin{algorithmic}
        \PROCEDURE{Partition'}{$A, p, r$}
            \STATE $x = A[p]$
            \STATE $q = p$
            \STATE $t = p$
            \FOR{$i = p + 1$ \TO $r$}
                \IF{$A[i] < x$}
                    \STATE exchange $A[q]$ with $A[i]$
                    \STATE $q = q + 1$
                    \STATE exchange $A[t + 1]$ with $A[i]$
                    \STATE $t = t + 1$
                \ELSEIF{$A[i] == x$}
                    \STATE exchange $A[t + 1]$ with $A[i]$
                    \STATE $t = t + 1$
                \ENDIF
            \ENDFOR
            \RETURN $(q, t)$
        \ENDPROCEDURE
        \end{algorithmic}
        \end{algorithm}