Entretanto, podemos ver que esse não é um método muito eficiente, pois em cada iteração ordenamos apenas um elemento do conjunto original, além de usar memória adicional com a cópia ordenada. Um método mais eficiente usa os mesmos princípios desse ordenamento, mas sem a utilização de uma lista auxiliar, pois apenas altera os elementos de posição. O algoritmo é descrito a seguir:
Vamos retomar o exemplo anterior e executar o algoritmo:
Esse tipo de método é melhor que o anterior, mas ele não é muito eficiente. A cada iteração movimentamos apenas um elemento, mas fazemos N-i comparações por iteração para saber qual é o menor valor, onde N é a quantidade de elementos e i é o número da iteração. Matematicamente podemos comprovar que a quantidade total de comparações é de N2. Isso significa que o esforço computacional cresce quadraticamente com a quantidade de elementos a serem ordenados. Veremos um método mais eficiente.