Merge Sort
Definição
O Merge Sort é um algoritmo de ordenação baseado na técnica de dividir e conquistar (divide and conquer). Ele divide a lista original em sublistas menores até que cada uma tenha um único elemento, e então intercala essas sublistas de forma ordenada para reconstruir a lista final.
É um algoritmo eficiente e com desempenho previsível.
Por que usar
- Garante desempenho consistente: O(n log n) no pior caso;
- Preserva a ordem de elementos iguais (estável);
- Ideal para ordenar grandes volumes de dados ou listas ligadas;
- Facilmente adaptável para programação funcional e paralelismo.
Complexidade
| Caso | Tempo | 
|---|---|
| Melhor caso | O(n log n) | 
| Médio caso | O(n log n) | 
| Pior caso | O(n log n) | 
- Estável? Sim
- Espaço adicional: O(n)
(Um algoritmo de ordenação é estável quando mantém a ordem original de elementos iguais após a ordenação.)
Exemplo prático (Python)
def merge_sort(lista):
    if len(lista) <= 1:
        return lista
    meio = len(lista) // 2
    esquerda = merge_sort(lista[:meio])
    direita = merge_sort(lista[meio:])
    return intercalar(esquerda, direita)
def intercalar(esq, dir):
    resultado = []
    i = j = 0
    while i < len(esq) and j < len(dir):
        if esq[i] < dir[j]:
            resultado.append(esq[i])
            i += 1
        else:
            resultado.append(dir[j])
            j += 1
    resultado.extend(esq[i:])
    resultado.extend(dir[j:])
    return resultado
# Exemplo
numeros = [5, 3, 8, 1, 2]
ordenados = merge_sort(numeros)
print(ordenados)  # [1, 2, 3, 5, 8]
Visualização do processo
Dada a lista: [5, 3, 8, 1, 2]
- Divide: [5, 3]e[8, 1, 2]
- Divide mais: [5][3][8][1][2]
Intercalação:
- [5] + [3]→- [3, 5]
- [1] + [2]→- [1, 2]
- [1, 2] + [8]→- [1, 2, 8]
Intercala final:
- [3, 5] + [1, 2, 8]→- [1, 2, 3, 5, 8]
 ECOSSISTEMA PYTHON
 ECOSSISTEMA PYTHON  LINUX
 LINUX  ASSEMBLY NASM
 ASSEMBLY NASM  JAVA
 JAVA