Numexa logoNumexa

Insertion Sort: Animação Passo a Passo

Veja cada comparação e cada troca acontecendo.

Comparações: 0 · Trocas/escritas: 0

Vetor inicial

comparandotrocando/escrevendopivôna posição final

O Insertion Sort, ou ordenação por inserção, funciona como organizar cartas na mão: pega o próximo elemento e o desliza para a esquerda até encontrar o lugar certo dentro da parte já ordenada.

Como o Insertion Sort Funciona

  1. Considere o 1º elemento como uma parte ordenada de tamanho 1.
  2. Pegue o próximo elemento.
  3. Compare com os elementos da parte ordenada, da direita para a esquerda.
  4. Desloque os maiores uma posição para a direita e insira o elemento no espaço aberto.
  5. Repita até o último elemento.

Complexidade do Insertion Sort

Melhor casoCaso médioPior casoMemória extraEstável?
O(n)O(n²)O(n²)O(1)Sim

Quando usar

Vetores pequenos (até umas dezenas de elementos) e vetores quase ordenados. Por isso algoritmos híbridos como o Timsort (Python e Java) e o Introsort (C++) usam Insertion Sort nos pedaços pequenos.

Insertion Sort em C

void insertion_sort(int v[], int n) {
    for (int i = 1; i < n; i++) {
        int chave = v[i];
        int j = i - 1;
        while (j >= 0 && v[j] > chave) {
            v[j + 1] = v[j];
            j--;
        }
        v[j + 1] = chave;
    }
}

Insertion Sort em Python

def insertion_sort(v):
    for i in range(1, len(v)):
        chave = v[i]
        j = i - 1
        while j >= 0 and v[j] > chave:
            v[j + 1] = v[j]
            j -= 1
        v[j + 1] = chave
    return v

Insertion Sort em Java

static void insertionSort(int[] v) {
    for (int i = 1; i < v.length; i++) {
        int chave = v[i];
        int j = i - 1;
        while (j >= 0 && v[j] > chave) {
            v[j + 1] = v[j];
            j--;
        }
        v[j + 1] = chave;
    }
}

Quer comparar com outros métodos? No visualizador de algoritmos de ordenação você roda todos no mesmo vetor e compara o número de comparações e trocas.

Perguntas Frequentes

Qual a complexidade do Insertion Sort?

O(n²) no caso médio e no pior caso (vetor invertido). No melhor caso, com o vetor já ordenado, é O(n): cada elemento é comparado uma única vez.

O Insertion Sort é estável?

Sim. Ele só desloca elementos estritamente maiores que a chave, então elementos iguais mantêm a ordem original.

Por que o Insertion Sort é usado em algoritmos profissionais?

Porque, para vetores pequenos, sua constante é muito baixa e ele aproveita a ordem que já existe. O Timsort, padrão do Python e do Java para objetos, ordena pequenos trechos com Insertion Sort e depois os intercala.

Ferramentas Relacionadas