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.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Escolher o algoritmo certo.
Os objetivos desta aula. 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.
Veja o essencial, parte por parte.
Estável ou instável. Estável: itens de mesmo valor mantêm a ordem em que estavam. Merge sort é estável.
Memória: in-place ou espaço extra. A segunda propriedade que separa os dois é o uso de memória.
Na prática, use o pronto. Regra geral: use a ordenação pronta da linguagem; ela já resolve a maioria dos casos.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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.
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.