Algoritmos de Ordenação #3 – Inserção Direta

Padrão


Mais um algoritmo de ordenação, dessa vez o algoritmo de Inserção Direta ou Insertion Sort. Este algoritmo é bastante eficiente quando aplicado a um pequeno número de elementos. Em termos gerais, ele percorre um vetor de elementos da esquerda para a direita e à medida que avança vai deixando os elementos mais à esquerda ordenados.

Segue, então, a minha implementação em C deste algoritmo:

void insercaoDireta(int *vetor, int tamanho)<br />
{<br />
   int i, x, k, j;</p>
<p>   for(i = 1; i &lt; tamanho; ++i)<br />
   {<br />
      x = vetor[i];<br />
      k = 0;<br />
      j = i - 1;<br />
      while(j &gt;= 0 &amp;&amp; k == 0)<br />
      {<br />
         if(x &lt; vetor[j])<br />
         {<br />
            vetor[j + 1] = vetor[j];<br />
            --j;<br />
         }<br />
         else<br />
            k = j + 1;<br />
      }<br />
      vetor[k] = x;<br />
   }<br />
}