8 min

Insertion Sort

Algoritmo de ordenação que insere cada elemento na posição correta da parte já ordenada do array, como organizar cartas na mão.

FácilO(n²) / O(1)OrdenaçãoComparaçãoEstávelIn-place

Visualizador Interativo

Array[ 5, 3, 8, 4, 2, 7, 1, 6 ]Passo 1 / 50
5
0
3
1
chave
8
2
4
3
2
4
7
5
1
6
6
7
Chave:3
Velocidade:800ms
Historico de Passos
#0Selecionando chave arr[1]=3 para inserir na parte ordenada

Como Funciona

O Insertion Sort funciona como organizar cartas na mão. Pega uma carta por vez e a insere na posição correta entre as cartas já organizadas. Começa considerando o primeiro elemento como já ordenado. Para cada elemento seguinte, compara com os anteriores e desloca os maiores para a direita até encontrar a posição correta para inserir. É eficiente para arrays pequenos ou quase ordenados, e é usado na prática como parte de algoritmos híbridos como o TimSort (Python) e IntroSort (C++).

O Insertion Sort é adaptativo. Para arrays quase ordenados, tem performance próxima de O(n). É o algoritmo mais eficiente para arrays pequenos (< 10-20 elementos).

Passo a Passo

  1. O primeiro elemento é considerado ordenado
  2. Pega o próximo elemento (chave)
  3. Compara com os elementos da parte ordenada, de trás para frente
  4. Desloca elementos maiores uma posição para a direita
  5. Insere a chave na posição correta
  6. Repete para todos os elementos

Análise de Complexidade

⏱️Tempo
O(n²)

No pior caso, cada elemento é comparado com todos os anteriores.

Ver prova

Comparações: 1 + 2 + ... + (n-1) = n(n-1)/2 = O(n²)

💾Espaco
O(1)

Ordena in-place. Só usa uma variável auxiliar para a chave.

🎯Melhor Caso
O(n)

Array já ordenado. O loop interno não executa nenhuma iteração.

⚠️Pior Caso
O(n²)

Array invertido. Cada elemento é deslocado para o início.

Comparação com Outros Algoritmos

AlgoritmoTempoEspacoEstavelMelhor Para
Insertion Sort(atual)O(n²)O(1)SimArrays pequenos, dados quase ordenados
Selection SortO(n²)O(1)NaoQuando trocas são caras
Bubble SortO(n²)O(1)SimFins didáticos
Merge SortO(n log n)O(n)SimGrandes datasets

Dicas e Erros Comuns

  • Começar o loop externo do índice 0 ao invés de 1
  • Esquecer de salvar o elemento chave antes de deslocar
  • Deslocar para o lado errado (para a esquerda ao invés da direita)

Perguntas de Entrevista

Pratique respondendo a perguntas comuns de entrevistas tecnicas. Clique em uma pergunta para iniciar uma sessao de pratica com IA.

Implementacao

python
1def insertion_sort(array):Definição
2 for i in range(1, len(array)):Loop Externo
3 key = array[i]Elemento Chave
4 j = i - 1
5
6 while j >= 0 and array[j] > key:Loop Interno
7 array[j + 1] = array[j]Deslocamento
8 j -= 1
9
10 array[j + 1] = keyInserção
11
12 return array
13