Ir para o conteúdo
PyPro PyPro
Artigos Cursos Projetos Missão Sobre nós Contato

Dicas Pythônicas

Explorando Estruturas de Dados e Algoritmos com Python

Como utilizar a biblioteca algorithms para implementar e entender algoritmos comuns.

Por Dilermando Piva Jr. · 27/01/2025

Como implementar algoritmos manualmente e simplificar com a biblioteca algorithms

Olá, caro leitor! Seja muito bem-vindo a mais uma edição da Dicas Pythonicas.

No pyPRO, nosso compromisso é equipá-lo com ferramentas e conhecimentos para que você domine Python em profundidade. Hoje, vamos explorar um clássico da computação: o algoritmo Merge Sort. Veremos como implementá-lo manualmente (para entender sua complexidade) e, em seguida, como simplificar o processo usando a biblioteca algorithms.

Instalando a Biblioteca

A biblioteca algorithms oferece implementações prontas de algoritmos e estruturas de dados. Para instalá-la:

pip install algorithms

Implementando o Merge Sort Manualmente

O Merge Sort é um algoritmo de ordenação eficiente baseado na técnica "dividir e conquistar". Ele divide a lista em sublistas, ordena cada parte e depois as combina. Vamos implementá-lo passo a passo:

Passo 1: Função de Combinação (Merge)

A função merge recebe duas listas ordenadas e as combina em uma única lista ordenada:

def merge(esquerda, direita):
 resultado = []
 i = j = 0

 # Compara elementos das sublistas e adiciona o menor ao resultado
 while i < len(esquerda) and j < len(direita):
 if esquerda[i] < direita[j]:
 resultado.append(esquerda[i])
 i += 1
 else:
 resultado.append(direita[j])
 j += 1

 # Adiciona os elementos restantes (se houver)
 resultado.extend(esquerda[i:])
 resultado.extend(direita[j:])
 return resultado

Passo 2: Função Recursiva do Merge Sort

A função principal divide a lista em metades até que cada sublista tenha um elemento e depois as combina:

def merge_sort(lista):
 if len(lista) <= 1:
 return lista

 meio = len(lista) // 2
 esquerda = merge_sort(lista[:meio]) # Divide a lista
 direita = merge_sort(lista[meio:])

 return merge(esquerda, direita) # Combina as partes ordenadas

Usando a Implementação Manual

if __name__ == "__main__":
 minha_lista = [1, 5, 9, 2, 6, 3]
 lista_ordenada = merge_sort(minha_lista)
 print(lista_ordenada) # Saída: [1, 2, 3, 5, 6, 9]

Simplificando com a Biblioteca algorithms

Agora que entendemos a complexidade por trás do Merge Sort, veja como é simples usar a implementação pronta da biblioteca:

from algorithms.sort import merge_sort

if __name__ == "__main__":
 minha_lista = [1, 5, 9, 2, 6, 3]
 lista_ordenada = merge_sort(minha_lista)
 print(lista_ordenada) # Saída: [1, 2, 3, 5, 6, 9]

Por Que Isso Importa?

  • Aprendizado vs. Produtividade:
  • Implementar algoritmos manualmente é essencial para entender seu funcionamento.
  • No entanto, em projetos reais, usar bibliotecas otimizadas economiza tempo e reduz erros.
  • Vantagens da Biblioteca algorithms:
  • Oferece implementações testadas e eficientes de algoritmos como Quick Sort, Dijkstra e estruturas como grafos e árvores.
  • Ideal para estudos, pois você pode analisar o código-fonte das funções (repositório no GitHub).

Explore Mais

Que tal testar outros algoritmos? Experimente substituir merge_sort por quick_sort na biblioteca e compare os resultados!

from algorithms.sort import quick_sort
lista_ordenada = quick_sort([1, 5, 9, 2, 6, 3])

Espero que esta dica tenha esclarecido tanto a teoria quanto a prática por trás dos algoritmos. Na próxima edição, exploraremos estruturas de dados avançadas.

Até lá, continue codando e lembre-se: no pyPRO, cada linha de código é um passo para o próximo nível! 🚀

Um forte abraço,

Prof. Dr. Dilermando Piva Jr.
Idealizador do pyPRO
Visite: https://pypro.com.br para mais conteúdos sobre Python, Ciência de Dados e Git/GitHub.

← Voltar para artigos

pyPRO - Python para todos.

Instagram YouTube LinkedIn X (Twitter)