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]

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com