Módulo 9 - Ordenação eficiente: merge sort e quick sort

Escolher o algoritmo certo

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 12/07/2026

O que você vai aprender

  • Distinguir ordenação estável de instável e por que isso importa.
  • Comparar ordenação in-place e ordenação com memória extra.
  • Relacionar cada propriedade a merge sort e quick sort.
  • Entender por que na prática se usa a ordenação pronta da linguagem.

Estável ou instável

A estabilidade parece um detalhe fino, mas resolve um problema concreto. Imagine uma tabela de alunos já ordenada por nome. Agora você quer ordená-la por nota. Se dois alunos tiverem a mesma nota, o que acontece com a ordem entre eles? Numa ordenação estável, eles continuam na ordem de nome que já tinham, então a tabela fica ordenada por nota e, dentro de cada nota, por nome, de graça. Numa ordenação instável, a ordem entre empatados é imprevisível, e você perde a organização anterior. O merge sort é naturalmente estável, porque na intercalação, ao empatar, ele sempre pega primeiro o elemento da metade esquerda, que vinha antes. O quick sort comum não garante isso: as trocas da partição podem inverter empatados.

Tabela comparando merge sort e quick sort em três linhas. Linha estabilidade: merge sort marcado como estável, quick sort como instável. Linha memória: merge sort usa espaço extra, quick sort é in-place. Linha pior caso: merge sort garante O(n log n), quick sort pode chegar a O(n ao quadrado) com pivô ruim. Ícones de check e atenção reforçam cada célula.
Merge sort e quick sort trocam vantagens: estabilidade e custo garantido de um lado, economia de memória e velocidade prática do outro.

Memória: in-place ou espaço extra

A segunda propriedade que separa os dois é o uso de memória. O quick sort é in-place: ele troca os elementos dentro da própria lista e usa quase nenhum espaço a mais. Isso é ótimo quando a memória é apertada ou a lista é enorme, porque não é preciso guardar uma segunda cópia. O merge sort clássico, ao contrário, precisa de espaço extra proporcional ao tamanho da lista, já que a intercalação monta um resultado novo. Em troca dessa memória, o merge sort entrega estabilidade e custo O(n log n) garantido, sem o pior caso do quick sort. É uma troca clássica em computação: gastar memória para ganhar previsibilidade, ou economizar memória aceitando um risco no pior caso.

🎮 Jogo da aula

De quem é a característica?

Classifique cada característica no algoritmo a que ela pertence.

Na prática, use o pronto

Aqui vai o segredo mais útil do módulo: na vida real, você quase nunca escreve o seu próprio algoritmo de ordenação. Toda linguagem madura já traz uma função de ordenar pronta, escrita e testada por muita gente, e afinada durante anos. Essas funções costumam usar métodos híbridos, que combinam o melhor de vários mundos, por exemplo trocar para inserção em pedaços pequenos, onde ela é rápida, e usar merge ou quick nos grandes. Além de mais rápidas, elas evitam os erros sutis de quem escreve ordenação na mão. Estudar merge sort e quick sort não é para você reimplementá-los todo dia; é para entender o que a função pronta faz por baixo, saber escolher entre uma opção estável e uma in-place quando a linguagem oferece as duas, e não se assustar quando alguém falar em pivô ou intercalação.

Teste rápido

O que caracteriza uma ordenação estável?

Perguntas frequentes

Estabilidade importa mesmo no dia a dia?
Importa sempre que você ordena por mais de um critério em etapas. Ordenar uma lista por data e depois, de forma estável, por categoria, mantém as datas em ordem dentro de cada categoria. Sem estabilidade, a segunda ordenação bagunçaria a primeira entre os itens de mesma categoria.
Se o quick sort tem pior caso ruim, por que ele é tão usado?
Porque na média é muito rápido e economiza memória por ser in-place, e o pior caso é fácil de evitar com boa escolha de pivô, como aleatório ou mediana de três. As implementações prontas costumam blindar contra o pior caso, então ele raramente aparece na prática.
Como escolho entre merge sort e quick sort num projeto real?
Na maioria das vezes você não escolhe: usa a ordenação pronta da linguagem. Quando a linguagem oferece opções, prefira uma estável se a ordem dos empates importa, e considere um método in-place se a memória for crítica. Fora esses casos, o padrão da linguagem serve bem.
O que é uma ordenação híbrida?
É uma que combina algoritmos conforme o tamanho ou o formato da lista. Muitas bibliotecas usam inserção para trechos pequenos, onde ela é veloz, e merge ou quick para os grandes. Assim aproveitam a simplicidade de um e a escala do outro. É o que roda por baixo da função de ordenar da linguagem.
Vale a pena escrever meu próprio merge sort ou quick sort?
Para aprender, com certeza: implementar fixa o entendimento. Para produção, quase nunca. A função pronta da linguagem é mais rápida, mais testada e evita bugs sutis de índice e recursão. Entender os algoritmos serve para usar bem o pronto e para conversar sobre desempenho, não para reinventá-los toda hora.
Existe um algoritmo de ordenação melhor que todos os outros?
Não existe um vencedor absoluto. Cada um troca vantagens: merge sort dá estabilidade e custo garantido gastando memória; quick sort dá velocidade e economia de memória com risco de pior caso. O melhor depende do que você precisa. Por isso as bibliotecas usam híbridos, que reúnem forças conforme a situação.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.