CodeGym /Cursos /Python SELF PT /Conceito de algoritmo e estruturas de dados

Conceito de algoritmo e estruturas de dados

Python SELF PT
Nível 51 , Lição 0
Disponível

1.1 O que é um algoritmo

algoritmo python

Algoritmo – é uma sequência ordenada de etapas ou instruções claramente definidas, destinada a realizar uma determinada tarefa ou resolver um problema específico. Cada etapa do algoritmo deve ser clara e inequívoca, e a execução do algoritmo deve levar a um resultado definido em um tempo finito.

Para que serve um algoritmo:

  • Resolução de problemas: Algoritmos permitem abordar sistematicamente a solução de diversas tarefas, desde operações matemáticas simples até problemas computacionais complexos.
  • Automatização de processos: Algoritmos são necessários para automatizar tarefas em software, permitindo que computadores realizem ações repetitivas sem intervenção humana.
  • Otimização de recursos: Algoritmos bem projetados ajudam a usar eficientemente os recursos, como tempo de execução e memória RAM.
  • Repetibilidade e confiabilidade: Algoritmos garantem repetibilidade e previsibilidade dos resultados, o que é importante para o desenvolvimento de software confiável.

Exemplos:

  • Tarefas diárias: Por exemplo, o algoritmo da rotina matinal – acordar, escovar os dentes, preparar o café da manhã e assim por diante.
  • Operações matemáticas: Algoritmo para encontrar o maior divisor comum (MDC) de dois números.
  • Programas de computador: Algoritmos de ordenação (por exemplo, ordenação por bolha) e busca (por exemplo, busca binária).

1.2 O que é uma estrutura de dados

Estrutura de dados – é uma maneira de organizar e armazenar dados de tal forma que eles possam ser usados e processados eficientemente. Diferentes estruturas de dados são destinadas a diferentes tipos de tarefas e operações.

Estrutura de dados python

Por que precisamos de estruturas de dados:

  • Gestão eficiente de dados: Estruturas de dados permitem organizar dados para que possam ser acessados, modificados e excluídos de forma rápida e eficiente.
  • Otimização de algoritmos: Diferentes estruturas de dados são adequadas para diferentes algoritmos, e a escolha correta da estrutura de dados pode melhorar significativamente a eficiência do algoritmo.
  • Facilidade de programação: Utilizar as estruturas de dados corretas torna o código mais claro, mantível e expansível.
  • Solução de problemas específicos: Algumas estruturas de dados são destinadas a resolver tarefas específicas, como tabelas de hash para pesquisa rápida ou árvores para dados hierárquicos.

Exemplos:

  • Arrays: Conjunto de elementos de um tipo, aos quais se pode acessar por índice.
  • Listas ligadas: Coleção de elementos, cada um contendo um link para o próximo elemento.
  • Pilha: Coleção de elementos com o princípio LIFO (Last In, First Out).
  • Fila: Coleção de elementos com o princípio FIFO (First In, First Out).

1.3 Importância dos algoritmos e estruturas de dados na programação

Importante! Mesmo se você estiver escrevendo um site simples ou um aplicativo móvel básico, você está usando algoritmos e estruturas de dados complexas. O aplicativo roda em um sistema operacional, o site dentro de um navegador, e para que essas coisas funcionem rápido e de forma confiável, são usados algoritmos e estruturas de dados padronizados.

Importância dos algoritmos:

  • Princípio fundamental da programação: Algoritmos são a base de qualquer programa, definindo como os dados serão processados para alcançar o resultado desejado.
  • Eficiência e desempenho: Algoritmos otimizados garantem execução mais rápida dos programas e uso eficiente dos recursos.
  • Solução de problemas complexos: Algoritmos permitem resolver problemas computacionais complexos que não podem ser resolvidos manualmente.
  • Universalidade: Muitos algoritmos podem ser aplicados em diferentes áreas, como ordenação, busca, compressão de dados e criptografia.

Importância das estruturas de dados:

  • Organização de dados: Estruturas de dados permitem organizar e gerenciar dados de forma eficiente, o que é importante para criar programas eficazes.
  • Suporte aos algoritmos: Diferentes estruturas de dados são ideais para diferentes algoritmos, e a escolha correta da estrutura de dados pode melhorar significativamente o desempenho do programa.
  • Escalabilidade: Estruturas de dados bem projetadas permitem expandir e modificar programas facilmente.

1.4 Exemplos de algoritmos simples

Algoritmo para encontrar o máximo em um array:

Este algoritmo encontra o maior valor em um array de números dado.

Passo a passo do algoritmo:

  1. Assumir o primeiro elemento do array como o máximo.
  2. Passar por todos os outros elementos do array:
  3. Se o elemento atual for maior que o máximo atual, atualizar o máximo.
  4. Após ver todos os elementos, retornar o máximo encontrado.

Implementação em Python:


def find_max(arr):
    # Presumimos que o primeiro elemento é o máximo
    max_val = arr[0]
    # Passamos por todos os elementos do array
    for num in arr:
        # Se o elemento atual for maior que max_val, atualizamos max_val
        if num > max_val:
            max_val = num
    # Retornamos o máximo encontrado
    return max_val

# Exemplo de uso:
# numbers = [4, 2, 9, 7, 5, 1]
# result = find_max(numbers)
# Saída: 9

Algoritmo de ordenação por bolha:

Este algoritmo ordena um array, comparando e trocando consecutivamente elementos vizinhos, se eles estiverem na ordem errada.

Passo a passo do algoritmo:

  1. Começar com o primeiro elemento do array.
  2. Comparar o elemento atual com o próximo.
  3. Se o elemento atual for maior que o próximo, trocá-los de lugar.
  4. Passar para o próximo elemento e repetir os passos 2-3, até o final do array.
  5. Repetir os passos 1-4 até que nenhum elemento seja trocado em um único percurso pelo array.

Implementação em Python:


def bubble_sort(arr):
    n = len(arr)
    # Passamos por todos os elementos do array
    for i in range(n):
        # Os últimos i elementos já estão ordenados
        for j in range(0, n - i - 1):
            # Comparamos elementos vizinhos
            if arr[j] > arr[j + 1]:
                # Trocamos os elementos se estiverem na ordem errada
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr

# Exemplo de uso:
# numbers = [64, 34, 25, 12, 22, 11, 90]
# sorted_numbers = bubble_sort(numbers)
# Saída: [11, 12, 22, 25, 34, 64, 90]
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION