\begin{tabular*}{12 cm}{l r} static void enemySort(Tipito[] todasLasPersonas) & \\ $\lbrace$ & \\ \hspace{1em}int maximosEnemigos = 0; & O(1) \\ \hspace{1em}int contador = 0; & O(1) \\ \hspace{1em}cantOperaciones += 2; & O(1) \\ \hspace{1em}while (contador < todasLasPersonas.length) & O(1) \\ \hspace{1em}$\lbrace$ & \\ \hspace{3em}maximosEnemigos = maximo(todasLasPersonas, contador); & O(todasLasPersonas.length) \\ \hspace{3em}cantOperaciones++; & O(1) \\ \hspace{3em}if (maximosEnemigos != 0) & O(1) \\ \hspace{3em}$\lbrace$ & \\ \hspace{5em}arraySwap(todasLasPersonas, maximosEnemigos, contador); & O(1) \\ \hspace{5em}cantOperaciones++; & O(1) \\ \hspace{3em}$\rbrace$& \\ \hspace{3em}contador++; & O(1) \\ \hspace{3em}cantOperaciones+= 2; & O(1) \\ \hspace{1em}$\rbrace$ & \\ $\rbrace$ & \\ \end{tabular*} \\ \\ Veamos que hay un solo while en la funcion, que comienza en 0 y llega hasta todasLasPersonas.length - 1, es decir, el ciclo se ejecuta tantas veces como elementos haya en todasLasPersonas.length. \\ Dentro del ciclo, todas las operaciones son constantes exceptuando maximo, que tiene orden O(todasLasPersonas.length). Dado que el cuerpo de la fucion es de orden O(todasLasPersonas.length) y se ejecuta todasLasPersonas.length veces, la funcion es de orden O(todasLasPersonas.length$^{2}$).