Ordenação por intercalação

Divide a lista ao meio, ordena cada metade e depois junta as duas metades ordenadas em uma só lista ordenada.

  • melhor caso Ω(n log n)
  • caso médio Θ(n log n)
  • pior caso O(n log n)
  • memória O(n)
  • estável
  • precisa de memória extra
O que significam esses termos?
  • Melhor caso: como o tempo cresce com o tamanho n da lista quando a entrada é a mais fácil para este algoritmo.
  • Caso médio: como o tempo costuma crescer com n. Com n², o dobro de valores leva cerca de quatro vezes mais tempo; n log n cresce bem menos.
  • Pior caso: o crescimento com a entrada mais difícil. Útil quando a velocidade nunca pode cair.
  • Memória: quanta memória extra é necessária além da lista. 1 significa algumas variáveis; n, uma cópia da lista.
  • Estável: dois valores iguais mantêm a ordem original. Importa ao ordenar por um só campo de um registro.
  • Sem memória extra: ordena dentro da própria lista, sem uma segunda lista.
  • comparando
  • movendo
  • na posição final
0 / 263 passos
Comparações Escritas

Clique em reproduzir: as linhas mostram como o custo cresce

Clique em reproduzir ou avance passo a passo pelo algoritmo.

Espaço: reproduzir ou pausar. Setas esquerda e direita: avançar passo a passo. Home e End: pular.

Experimente: Escolha uma lista com poucos valores únicos. Se dois valores forem iguais, o da metade esquerda é pego primeiro, então a ordem se mantém.

Como funciona

Vai dividindo a lista até cada pedaço ter um só valor, que já está ordenado. Depois junta os pedaços em pares: compara o primeiro valor de cada um e pega o menor, repetindo até acabar. A linha de cima na animação é o espaço extra usado na junção.

divisãojunção52415241524125141245

Quando é uma boa escolha

Quando você precisa de uma velocidade que continua boa mesmo no pior caso, e valores iguais precisam manter a ordem. Python e Java usam uma versão desse método. O ponto fraco é que ele precisa de memória extra.

© 2026 Developer Toolbox. Todos os direitos reservados. Sobre