\begin{algorithm}
\caption{QuickSort}
\begin{algorithmic}
\PROCEDURE{QuickSort}{$A, lo, hi$}
\IF{$lo < hi$}
\STATE $p \gets hi$
\STATE \CALL{swap}{$A[p]$, $A[hi]$}
\STATE $pivot \gets A[hi]$
\STATE $i \gets lo$
\FOR{$j \gets lo$ \TO $hi - 1$}
\IF{$A[j] < pivot$}
\STATE \CALL{swap}{$A[i]$, $A[j]$}
\STATE $i \gets i + 1$
\ENDIF
\ENDFOR
\STATE \CALL{swap}{$A[i]$, $A[hi]$}
\STATE \CALL{QuickSort}{$A, lo, i - 1$}
\STATE \CALL{QuickSort}{$A, i + 1, hi$}
\ENDIF
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}